Decryption device, cryptographic system, and decryption method

ABSTRACT

An encryption device ( 20 ) generates a ciphertext by setting, in the ciphertext, one of a predicate vector of arithmetic branching programs (ABP) and an attribute vector over a basis B of the basis B and a basis B*, which are dual bases in dual vector spaces. A key generation device ( 30 ) generates a decryption key by setting, in the decryption key, the other one of the predicate vector and the attribute vector over the basis B*. A decryption device ( 40 ) decrypts the ciphertext by performing a pairing operation on the ciphertext generated by the encryption device ( 20 ) and the decryption key generated by the key generation device ( 30 ).

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a Continuation of PCT International Application No. PCT/JP2019/031129, filed on Aug. 7, 2019, which claims priority under 35 U.S.C. 119(a) to Patent Application No. 2018-188781, filed in Japan on Oct. 4, 2018, all of which are hereby expressly incorporated by reference into the present application.

TECHNICAL FIELD

The present invention relates to predicate encryption.

BACKGROUND ART

Non-Patent Literature 1 describes a predicate encryption scheme using predicates of arithmetic branching programs (ABP). This predicate encryption scheme is a scheme that allows a wide range of predicates.

CITATION LIST Non-Patent Literature

-   Non-Patent Literature 1: Wee, H.: Attribute-hiding predicate     encryption in bilinear groups, revisited. In: Theory of Cryptography     Conference-TCC 2017. pp. 206-233. Springer (2017) -   Non-Patent Literature 2: Ishai, Y, Kushilevitz, E.: Perfect     constant-round secure computation via perfect randomizing     polynomials. In: International Colloquium on Automata, Languages,     and Programming-ICALP 2002. pp. 244-256. Springer (2002)

SUMMARY OF INVENTION Technical Problem

The security of the predicate encryption scheme described in Non-Patent Literature 1 is not adaptive security that is practical. Therefore, there is concern about whether the security of this predicate encryption scheme is maintained when it is actually used.

It is an object of the present invention to make it possible to realize a predicate encryption scheme that allows a wide range of predicates as with the predicate encryption scheme described in Non-Patent Literature 1 and also allows security to be enhanced.

Solution to Problem

A decryption device according to the present invention includes

a ciphertext acquisition unit to acquire a ciphertext in which one of a predicate vector of arithmetic branching programs (ABP) and an attribute vector is set over a basis B of the basis B and a basis B*, which are dual bases in dual vector spaces;

a decryption key acquisition unit to acquire a decryption key in which the other one of the predicate vector and the attribute vector is set over the basis B*; and

a decryption unit to decrypt the ciphertext by performing a pairing operation on the ciphertext acquired by the ciphertext acquisition unit and the decryption key acquired by the decryption key acquisition unit.

Advantageous Effects of Invention

In the present invention, a ciphertext is decrypted by performing a pairing operation on the ciphertext in which one of a predicate vector of ABP and an attribute vector is set over a basis B and a decryption key in which the other one is set over a basis B*, the basis B and the basis B* being dual bases in dual vector spaces. This makes it possible to realize a predicate encryption scheme that allows a wide range of predicates and also allows security to be enhanced.

BRIEF DESCRIPTION OF DRAWINGS

FIG. 1 is a configuration diagram of a cryptographic system 1 according to a first embodiment;

FIG. 2 is a configuration diagram of a setup device 10 according to the first embodiment;

FIG. 3 is a configuration diagram of an encryption device 20 according to the first embodiment;

FIG. 4 is a configuration diagram of a key generation device 30 according to the first embodiment;

FIG. 5 is a configuration diagram of a decryption device 40 according to the first embodiment;

FIG. 6 is a flowchart illustrating operation of the setup device 10 according to the first embodiment;

FIG. 7 is a flowchart illustrating operation of the encryption device 20 according to the first embodiment;

FIG. 8 is a flowchart illustrating operation of the key generation device 30 according to the first embodiment;

FIG. 9 is a flowchart illustrating a PGB computation process according to the first embodiment;

FIG. 10 is a flowchart illustrating operation of the decryption device 40 according to the first embodiment;

FIG. 11 is a flowchart illustrating a decryption process according to the first embodiment;

FIG. 12 is a configuration diagram of the setup device 10 according to a third variation;

FIG. 13 is a configuration diagram of the encryption device 20 according to the third variation;

FIG. 14 is a configuration diagram of the key generation device 30 according to the third variation; and

FIG. 15 is a configuration diagram of the decryption device 40 according to the third variation.

DESCRIPTION OF EMBODIMENTS First Embodiment

*** Notations ***

Notations to be used in the following description will be described.

Formula 101 denotes a security parameter, and 1^(λ) represents encoding of unary code.

λ∈

  [Formula 101]

Formula 102 denotes a finite field modulo q. Formula 102 will be written as a field F_(q) or simply as F_(q).

_(q) for any prime q∈

  [Formula 102]

For Formula 103, Formula 104 is defined.

d∈

,

c∈

∪{0} (v<d)  [Formula 103]

[d]={1, . . . ,d},

[c,d]={c, . . . ,d}  [Formula 104]

Formula 105 denotes a process of uniformly sampling an element z from a set Z.

#Z denotes the size or cardinality of the set Z.

For a probabilistic algorithm U, Π=U(Θ;Φ) denotes output of the algorithm U on input Θ with content Φ of a random tape. Formula 106 denotes a process of sampling II from the output distribution of the algorithm U on input Θ with a uniform random tape.

For a deterministic algorithm V, Π=V(Θ) denotes output of the algorithm V on input Θ.

It is assumed that each algorithm is given the unary representation 1^(λ) of the security parameter λ as input without any explicit indication of the input when it is clear from the context.

For Formula 107, Formula 108 denotes a vector indicated in Formula 109. Formula 108 will be written as v^(→).

_(q) , d∈

  [Formula 107]

{right arrow over (v)}  [Formula 108]

(v ₁ , . . . ,v _(d))∈

_(q) ^(d)

where v _(i)∈

_(q) for all i∈d  [Formula 109]

An all zero vector in a field F_(q) ^(d) will be written as indicated in Formula 110.

{right arrow over (0)}^(d)  [Formula 110]

For two vectors indicated in Formula 111, Formula 112 denotes the inner product of the vector v^(→) and the vector w^(→). That is, Formula 112 denotes Formula 113.

$\begin{matrix} {\overset{\rightarrow}{v},{\overset{\rightarrow}{w} \in {\mathbb{F}}_{q}^{d}}} & \left\lbrack {{Formula}\mspace{14mu} 111} \right\rbrack \\ {\overset{\rightarrow}{v} \cdot \overset{\rightarrow}{w}} & \left\lbrack {{Formula}\mspace{14mu} 112} \right\rbrack \\ {{\overset{\rightarrow}{v} \cdot \overset{\rightarrow}{w}} = {{\sum\limits_{i \in {\lbrack d\rbrack}}{v_{i}w_{i}}} \in {\mathbb{F}}_{q}}} & \left\lbrack {{Formula}\mspace{14mu} 113} \right\rbrack \end{matrix}$

Formula 114 denotes a multiplicative cyclic group. Formula 114 will be written as a group G or simply as G.

  [Formula 114]

For the group G and a generator g of the group G, v denotes a d-dimensional vector of group elements. That is, this is expressed in Formula 115.

v=(g ^(v) ¹ , . . . ,g ^(v) ^(d) )∈

^(d) for some d∈

,

where {right arrow over (v)}=(v ₁ , . . . ,v _(d))∈

_(q) ^(d)  [Formula 115]

Formula 116 denotes a d-dimensional vector of group elements indicated in Formula 117. Formula 118 denotes an identity element of the group G.

$\begin{matrix} 1_{\mathbb{G}}^{d} & \left\lbrack {{Formula}\mspace{14mu} 116} \right\rbrack \\ {\overset{\overset{d}{︷}}{\left( {1_{\mathbb{G}},\ldots\;,1_{\mathbb{G}}} \right)} \in {\mathbb{G}}^{d}} & \left\lbrack {{Formula}\mspace{14mu} 117} \right\rbrack \\ 1_{\mathbb{G}} & \left\lbrack {{Formula}\mspace{14mu} 118} \right\rbrack \end{matrix}$

M=(m_(i,k)) denotes a matrix with entries m_(i,k) ∈F_(q). M^(T) denotes a transpose of the matrix M. Note that det(M) denotes a determinant of the matrix M. In describing matrices, I denotes an identity matrix, and 0 denotes a zero matrix. GL(d, F_(q)) denotes a set of all d×d invertible matrices in F_(q) ^(d×d).

*** Preliminaries ***

Definitions of terms and the like to be used in the following description will be described.

In a first embodiment, a partially-hiding predicate encryption (PHPE) scheme using (ABP∘IP) predicates encompassing predicates of ABP and inner-product predicates will be described.

<PHPE>

PHPE is predicate encryption (PE) that partially conceals attributes. In the following description, an attribute vector x^(→) and an attribute vector z^(→) are given, and the attribute vector x^(→) is a public attribute vector to be published and the attribute vector z^(→) is a secret attribute vector to be kept secret.

<ABP>

A branching program (BP) F is defined by five elements indicated in Formula 119.

Γ=(

,

,V ₀ ,V ₁,ϕ)  [Formula 119]

Formula 120 denotes a set of vertices, and Formula 121 denotes a set of edges. Formula 120 will be written simply as V, and Formula 121 will be written simply as E.

  [Formula 120]

  [Formula 121]

(V, E) is a directed acyclic graph. V₀ and V₁∈V are special vertices called a source and a sink respectively, and φ is a labeling function for edges in E.

An ABP Γ over a finite field F_(q) computes a function f indicated in Formula 122.

f:

_(q) ^(d)→

_(q) for some d∈

  [Formula 122]

Note that the labeling function φ assigned to each edge in E is a degree one polynomial function in one variable with coefficients in F_(q) or a constant in F_(q). Let p be a set of all paths from the source V₀ to the sink V₁ in the ABP Γ. The output of the function f computed by the ABP Γ on some input v^(→)=(v₁, . . . , v_(d))∈F_(q) ^(d) is defined as indicated in Formula 123.

$\begin{matrix} \left. {{f\left( \overset{\rightarrow}{v} \right)} = {\sum\limits_{{\mathbb{P}} \in p}\left\lbrack {\prod\limits_{E \in {\mathbb{P}}}{\phi(E)}} \right._{\overset{\rightarrow}{v}}}} \right\rbrack & \left\lbrack {{Formula}\mspace{14mu} 123} \right\rbrack \end{matrix}$

Formula 124 denotes an evaluation value of a function φ(E) at v^(→).

E∈

, ϕ(E)|_({right arrow over (v)})  [Formula 124]

The following content is presented in Non-Patent Literature 2.

When ABP Γ=(V, E, V₀, V₁, φ) computing a function f is given, it is possible to efficiently and deterministically compute a function L mapping input v^(→)∈F_(q) ^(d) to a (#V−1)×(#V−1) matrix L(v^(→)) over F_(q). The following (1) to (3) hold:

(1) det(L(v^(→)))=f(v^(→)).

(2) Each entry of (L(v^(→))) is a degree one polynomial function in one variable v_(i) (i∈[d]) with coefficients in F_(q) or a constant in F_(q).

(3) (L(v^(→))) contains only −1's in the second diagonal, that is, the diagonal just below the main diagonal, and contains only 0's below the second diagonal.

Specifically, the matrix L is obtained by removing the column corresponding to V₀ and the row corresponding to V₁ from a matrix Ar−I, where the matrix Ar is an adjacency matrix for Γ and I is an identity matrix.

Note that there exists a linear-time algorithm that converts any Boolean formula, Boolean branching program, or arithmetic formula to an ABP.

<Function Family F^((q,n′,m)) _(ABP∘IP)>

A function family F^((q,n′,m)) _(ABP∘IP) is a function family supported by the PHPE scheme according to the first embodiment.

The function family F^((q,n′,m)) _(ABP∘IP) is parameterized by a prime q and natural numbers n′ and n, and contains a function f indicated in Formula 125.

$\begin{matrix} {\mspace{79mu}{\left. {f\text{:}\mspace{11mu}{\mathbb{F}}_{q}^{n^{\prime}} \times {\mathbb{F}}_{q}^{n}}\rightarrow{\mathbb{F}}_{q} \right.\mspace{79mu}{{defined}\mspace{14mu}{by}}\mspace{79mu}{{f\left( {\overset{\rightarrow}{x},\overset{\rightarrow}{z}} \right)} = {\sum\limits_{j \in {\lbrack n\rbrack}}{{f_{j}\left( \overset{\rightarrow}{x} \right)}z_{j}}}}{{{{for}\mspace{14mu}{all}\mspace{14mu}\overset{\rightarrow}{x}} = {\left( {x_{1},\ldots\;,x_{n^{\prime}}} \right) \in {\mathbb{F}}_{q}^{n^{\prime}}}},{\overset{\rightarrow}{z} = {\left( {z_{1},\ldots\;,z_{n}} \right) \in {\mathbb{F}}_{q}^{n}}}}{{{where}\mspace{14mu} f_{1}},\ldots\;,\left. {f_{n}\text{:}\mspace{11mu}{\mathbb{F}}_{q}^{n^{\prime}}}\rightarrow{{\mathbb{F}}_{q}\mspace{14mu}{are}\mspace{14mu}{functions}\mspace{14mu}{computed}\mspace{20mu}{by}} \right.}\mspace{79mu}{{{some}\mspace{14mu}{{ABP}'}s\mspace{14mu}\Gamma_{1}},\ldots\;,\Gamma_{n}}}} & \left\lbrack {{Formula}\mspace{14mu} 125} \right\rbrack \end{matrix}$

The function f is ζf(x^(→),ζz^(→))=ζf(x^(→), z^(→)) for ∈F_(q) and (x^(→), z^(→))∈F_(q) ^(n′)×F_(q) ^(n).

The function f realized by the ABP Γ is constructed as described below.

First, all the source vertices of ABP{Γ_(j)}_(j∈[n]) are merged into a single vertex, and the merged single vertex is designated as the source vertex of the ABP Γ. Next, a new sink vertex for the ABP Γ is generated. For each integer j of j∈[n], the sink vertex of the ABP Γ_(j) is connected to the new sink vertex with a directed edge labeled with z_(j). Note that the size of the ABP Γ computing the function f is m+n+1, where 1 corresponds to the sink vertex of the ABP Γ, n corresponds to the number of edges directed to the sink vertex, and m corresponds to other vertices in the ABP Γ.

The ABP F is modified to an ABP Γ′ in which each vertex has only one outgoing edge having a label of degree one. Specifically, the ABP Γ is modified to the ABP Γ′ by replacing each edge E in the ABP Γ with a pair of edges labeled 1 and φ(E), where φ is the labeling function of the ABP Γ. The size of the ABP Γ′ is also m+n+1.

<ABP∘IP Predicate>

An ABP∘IP predicate family R^(ABP∘IP) is as indicated in Formula 126.

R ^(ABP∘IP) ={R ^(ABP∘IP)(f,(⋅,⋅):

_(q) ^(n′)×

_(q) ^(n)→{0,1}|f∈F _(ABP∘IP) ^((q,n′,n))}

where R ^(ABP∘IP)(f,({right arrow over (x)},{right arrow over (z)}))=1, if f({right arrow over (x)},{right arrow over (z)})=0,

and R ^(ABP∘IP)(f,({right arrow over (x)},{right arrow over (z)}))=0, if f({right arrow over (x)},{right arrow over (z)})≠0,

for all f∈F _(ABP∘IP) ^((q,n′,n)) and ({right arrow over (x)},{right arrow over (z)})∈

_(q) ^(n′)×

_(q) ^(n)  [Formula 126]

That is, if 0 is obtained when the vector x^(→) and the vector z^(→) are input to the function f, the ABP∘IP predicate family R^(ABP∘IP) outputs 1 when the function f, the vector x^(→), and the vector z^(→) are input. If 0 is not obtained when the vector x^(→) and the vector z^(→) are input to the function f, the ABP∘IP predicate family R^(ABP∘IP) outputs 0 when the function f, the vector x^(→), and the vector z^(→) are input.

<Partial GarBlig (PGB) Algorithm>

A PGB algorithm (PGB(f; r^(→))) is a probabilistic polynomial-time algorithm that takes as input a function f∈F^((q,n′,n)) _(ABP∘IP) and uses randomness r^(→)∈F_(q) ^(m+n−1) and outputs a set of constants ({σ_(j)}_(j∈[n]), {α_(j′),γ_(j′)}_(j′∈[m]))∈F_(q) ^(n)×(F_(q) ²)^(m) along with a function ρ: [m]→[n′]. Together with x^(→)∈F_(q) ^(n′) and z^(→)∈F_(q) ^(n), these constants specify n+m shares ({z_(j)+σ_(j)}_(j∈[n]), {α_(j′)z_(ρ(j′))+γ_(j′)}_(j′∈[m])).

Note that m+n+1 is the number of vertices in the ABP computing the function f and ρ is deterministically derived from the function f.

The PGB algorithm has the following properties (1) to (3):

(1) Linearity: For a fixed function f∈F^((q,n′,n)) _(ABP∘IP), PGB(f;⋅) computes a linear function with randomness over F_(q).

(2) Reconstruction: There exists a deterministic polynomial-time algorithm REC that takes as input a function f∈F^((q,n′,n)) _(ABP∘IP) and x^(→)∈F_(q) ^(n′), and outputs a set of coefficients ({Ω_(j)}_(j∈[n]), {Ω′_(j)}_(j′∈[m]))∈F_(q) ^(n)×F_(q) ^(n′). The set of coefficients is used in combination with a set of shares computed by combining the output of PGB(f) with x^(→) and z^(→)∈F_(q) ^(n), to recover f(x^(→), z^(→)).

(3) Privacy: There exists a probabilistic polynomial-time algorithm SIM such that for any function f∈F^((q,n′,n)) _(ABP∘IP), x^(→)∈F_(q) ^(n′), and z^(→)∈F_(q) ^(n), the output of SIM on input of the function f, x^(→), and f(x^(→), z^(→)) is identically distributed to shares. The shares are computed by combining the output of PGB(f; r^(→)), for uniformly random r^(→), with x^(→) and z^(→).

<Bilinear Group>

Note that param_(G), which is a bilinear group, indicated in Formula 127 includes a prime q, cyclic multiplicative groups G₁, G₂, and Gr of order q, a generator g₁ of the group G₁, a generator g₂ of the group G₂, and a bilinear map e indicated in Formula 128.

=(q,

₁,

₂ ,

T,g ₁ ,g ₂ ,e)  [Formula 127]

e:

₁×

₂→

_(T)  [Formula 128]

The bilinear map e has the following two properties of bilinearity and non-degeneracy:

(Bilinearity)

Formula 129 holds.

e(g ₁ ^(δ) ,g ₂ ^({circumflex over (δ)}))=e(g ₁ ,g ₂)^(δ{circumflex over (δ)}) for all δ,{circumflex over (δ)}∈

_(q)  [Formula 129]

(Non-Degeneracy)

Formula 130 holds. Note that Formula 131 denotes an identity element of the group G_(T).

e(g ₁ ,g ₂)≠

  [Formula 130]

  [Formula 131]

In the following description, let G_(BPG)( ) be a bilinear group generation algorithm. That is, G_(BPG) is an algorithm that generates param_(G).

<Dual Pairing Vector Spaces (hereinafter, DPVS)>

Note that param_(V), which is DPVS, indicated in Formula 132 is formed by the direct product of param_(G), which is a bilinear group, and param_(V) includes a prime q, a d-dimensional vector space V_(t)=G_(t) ^(d) over F_(q), for t∈[2], under vector addition and scalar multiplication defined for each element, a canonical basis A_(t) of the vector space V_(t), for t∈[2], indicated in Formula 133, and a pairing operation e indicated in Formula 134.

$\begin{matrix} {{params}_{\mathbb{V}} = \left( {q,{\mathbb{V}}_{1},{\mathbb{V}}_{2},{\mathbb{G}}_{T},{\mathbb{A}}_{1},{\mathbb{A}}_{2},e} \right)} & \left\lbrack {{Formula}\mspace{14mu} 132} \right\rbrack \\ {{\mathbb{A}}_{t} = \left\{ {{a^{({t,L})} = \overset{\overset{L - 1}{︷}}{\left( {1_{{\mathbb{G}}_{t}},\ldots\;,1_{{\mathbb{G}}_{t}}} \right.}},g_{t},\overset{\overset{d - L}{︷}}{\left. {1_{{\mathbb{G}}_{t}},\ldots\;,1_{{\mathbb{G}}_{t}}} \right)}} \right\}_{L \in {\lbrack d\rbrack}}} & \left\lbrack {{Formula}\mspace{14mu} 133} \right\rbrack \\ {\mspace{79mu}{\left. {e\text{:}\mspace{11mu}{\mathbb{V}}_{1} \times {\mathbb{V}}_{2}}\rightarrow{\mathbb{G}}_{T} \right.\mspace{79mu}{{{defined}\mspace{14mu}{by}\mspace{14mu}{e\left( {v,w} \right)}} = {{\prod\limits_{L \in {\lbrack d\rbrack}}{e\left( {g_{1}^{v_{L}},g_{2}^{w_{L}}} \right)}} \in {\mathbb{G}}_{T}}}\mspace{79mu}{{{{for}\mspace{14mu}{all}\mspace{14mu} v} = {\left( {g_{1}^{v_{1}},\ldots\;,g_{1}^{v_{d}}} \right) \in {\mathbb{V}}_{1}}},\mspace{79mu}{w = {\left( {g_{2}^{w_{1}},\ldots\;,g_{2}^{w_{d}}} \right) \in {\mathbb{V}}_{2}}}}}} & \left\lbrack {{Formula}\mspace{14mu} 134} \right\rbrack \end{matrix}$

The map e in param_(V) has the following two properties of bilinearity and non-degeneracy:

(Bilinearity)

Formula 135 holds.

e(δv,{circumflex over (δ)}w)=e(v,w)^(δ{circumflex over (δ)}) for all δ,{circumflex over (δ)}∈

_(q) ,v∈

₁ ,w∈

₂  [Formula 135]

(Non-Degeneracy)

Formula 136 holds.

If e(v,w)=

for all w∈

₂, then v=

  [Formula 136]

For a basis w of the vector space V_(t) indicated in Formula 137 and a vector v^(→)∈F_(q) ^(d), Formula 138 denotes a vector of the vector space V_(t) formed by a linear combination of the elements of the basis W and the elements of the vector v^(→). That is, Formula 138 denotes Formula 139.

$\begin{matrix} {{\mathbb{W}} = {{\left\{ {w^{(1)},\ldots\;,w^{(d)}} \right\}\mspace{14mu}{of}\mspace{14mu}{\mathbb{V}}_{t}\mspace{14mu}{for}\mspace{14mu} t} \in \lbrack 2\rbrack}} & \left\lbrack {{Formula}\mspace{14mu} 137} \right\rbrack \\ \left( \overset{\rightarrow}{v} \right)_{\mathbb{W}} & \left\lbrack {{Formula}\mspace{14mu} 138} \right\rbrack \\ {\left( \overset{\rightarrow}{v} \right)_{\mathbb{W}} = {{\sum\limits_{L \in {\lbrack d\rbrack}}{v_{L}w^{(L)}}} \in {\mathbb{V}}_{t}}} & \left\lbrack {{Formula}\mspace{14mu} 139} \right\rbrack \end{matrix}$

For a vector v∈V_(t) and a matrix M=(m_(i,k))∈F_(q) ^(d×d), vM denotes a d-dimensional vector indicated in Formula 140.

$\begin{matrix} {\left( {g_{t}^{\sum\limits_{i \in {\lbrack d\rbrack}}\;{m_{i,1}v_{i}}},\ldots\;,\; g_{t}^{{\sum\limits_{i \in {\lbrack d\rbrack}}\; m_{i}},v_{i}}} \right) \in {\mathbb{V}}_{t}} & \left\lbrack {{Formula}\mspace{14mu} 140} \right\rbrack \end{matrix}$

In the following description, let G_(DPVS)(1^(λ), d) be a DPVS generation algorithm. That is, G_(DPVS) is an algorithm that takes as input a unary encoded security parameter 1^(λ) and a natural number d indicating a dimension, and generates param_(V).

*** Description of Configurations ***

<Construction of PHPE>

In the first embodiment, a key-policy (KP)-PHPE scheme will be described. KP signifies that information for access control is set in a decryption key.

In particular, in the first embodiment, the KP-PHPE scheme in an attribute-only mode will be described. The attribute-only mode signifies that no payload is included in a ciphertext. That is, the attribute-only mode signifies that no message to be encrypted is included in a ciphertext. Note that a method for modifying the KP-PHPE scheme in the attribute-only mode to the KP-PHPE scheme of a version in which a payload is included in a ciphertext is obvious to those skilled in the art and can be easily realized.

The KP-PHPE scheme includes a PHPE.Setup algorithm, a PHPE.Encrypt algorithm, a PHPE.KeyGen algorithm, and a PHPE.Decrypt algorithm.

The PHPE.Setup algorithm takes as input a security parameter λ, a length n′ of a public attribute vector, and a length n of a secret attribute vector, and outputs a public parameter MPK and a master secret key MSK.

The PHPE.Encrypt algorithm takes as input the public parameter MPK, a public attribute vector x^(→)∈F_(q) ^(n′), and a secret attribute vector z^(→)∈F_(q) ^(n), and outputs a ciphertext CT.

The PHPE.KeyGen algorithm takes as input the public parameter MPK, the master secret key MSK, and a function f∈F^((q,n′,n)) _(ABP∘IP), and outputs a decryption key SK(f).

The PHPE.Decrypt algorithm takes as input the public parameter MPK, the decryption key SK(f) for the function f∈F^((q,n′,n)) _(ABP∘IP), and the ciphertext CT, and outputs 1 or 0.

<Configuration of Cryptographic System 1>

Referring to FIG. 1, a configuration of a cryptographic system 1 according to the first embodiment will be described.

The cryptographic system 1 includes a setup device 10, an encryption device 20, a key generation device 30, and a decryption device 40. The setup device 10, the encryption device 20, the key generation device 30, and the decryption device 40 are computers. The setup device 10, the encryption device 20, the key generation device 30, and the decryption device 40 are connected via a network.

Referring to FIG. 2, a configuration of the setup device 10 according to the first embodiment will be described.

The setup device 10 is a computer to execute the PHPE.Setup algorithm.

The setup device 10 includes hardware of a processor 11, a memory 12, a storage 13, and a communication interface 14. The processor 11 is connected with the other hardware components via signal lines and controls the other hardware components.

The setup device 10 includes, as functional components, an acceptance unit 111, a master key generation unit 112, and a transmission unit 113. The functions of the functional components of the setup device 10 are realized by software.

The storage 13 stores programs for realizing the functions of the functional components of the setup device 10. These programs are loaded into the memory 12 by the processor 11 and executed by the processor 11. This realizes the functions of the functional components of the setup device 10.

Referring to FIG. 3, a configuration of the encryption device 20 according to the first embodiment will be described.

The encryption device 20 is a computer to execute the PHPE.Encrypt algorithm.

The encryption device 20 includes hardware of a processor 21, a memory 22, a storage 23, and a communication interface 24. The processor 21 is connected with the other hardware components via signal lines and controls the other hardware components.

The encryption device 20 includes, as functional components, a master key acquisition unit 211, a vector acquisition unit 212, an encryption unit 213, and a transmission unit 214. The functions of the functional components of the encryption device 20 are realized by software.

The storage 23 stores programs for realizing the functions of the functional components of the encryption device 20. These programs are loaded into the memory 22 by the processor 21 and executed by the processor 21. This realizes the functions of the functional components of the encryption device 20.

Referring to FIG. 4, a configuration of the key generation device 30 according to the first embodiment will be described.

The key generation device 30 is a computer to execute the PHPE.KeyGen algorithm.

The key generation device 30 includes hardware of a processor 31, a memory 32, a storage 33, and a communication interface 34. The processor 31 is connected with the other hardware components via signal lines and controls the other hardware components.

The key generation device 30 includes, as functional components, a master key acquisition unit 311, a function acquisition unit 312, a PGB computation unit 313, a key generation unit 314, and a transmission unit 315. The functions of the functional components of the key generation device 30 are realized by software.

The storage 33 stores programs for realizing the functions of the functional components of the key generation device 30. These programs are loaded into the memory 32 by the processor 31 and executed by the processor 31. This realizes the functions of the functional components of the key generation device 30.

Referring to FIG. 5, a configuration of the decryption device 40 according to the first embodiment will be described.

The decryption device 40 is a computer to execute the PHPE.Decrypt algorithm.

The decryption device 40 includes hardware of a processor 41, a memory 42, a storage 43, and a communication interface 44. The processor 41 is connected with the other hardware components via signal lines and controls the other hardware components.

The decryption device 40 includes, as functional components, a master key acquisition unit 411, a ciphertext acquisition unit 412, a decryption key acquisition unit 413, and a decryption unit 414. The decryption unit 414 includes a cofactor computation unit 415, a pairing operation unit 416, and an output value computation unit 417. The functions of the functional components of the decryption device 40 are realized by software.

The storage 43 stores programs for realizing the functions of the functional components of the decryption device 40. These programs are loaded into the memory 42 by the processor 41 and executed by the processor 41. This realizes the functions of the functional components of the decryption device 40.

Each of the processors 11, 21, 31, and 41 is an integrated circuit (IC) that performs processing. As a specific example, each of the processors 11, 21, 31, and 41 is a central processing unit (CPU), a digital signal processor (DSP), or a graphics processing unit (GPU).

Each of the memories 12, 22, 32, and 42 is a storage device to temporarily store data. As a specific example, each of the memories 12, 22, 32, and 42 is a static random access memory (SRAM) or a dynamic random access memory (DRAM).

Each of the storages 13, 23, 33, and 43 is a storage device to store data. As a specific example, each of the storages 13, 23, 33, and 43 is a hard disk drive (HDD). Alternatively, each of the storages 13, 23, 33, and 43 may be a portable recording medium such as a Secure Digital (SD, registered trademark) memory card, CompactFlash (CF, registered trademark), a NAND flash, a flexible disk, an optical disc, a compact disc, a Blu-ray (registered trademark) disc, or a digital versatile disc (DVD).

Each of the communication interfaces 14, 24, 34, and 44 is an interface for communicating with external devices. As a specific example, each of the communication interfaces 14, 24, 34, and 44 is an Ethernet (registered trademark) port, a Universal Serial Bus (USB) port, or a High-Definition Multimedia Interface (HDMI, registered trademark) port.

FIG. 2 illustrates only one processor 11. However, a plurality of processors 11 may be included, and the plurality of processors 11 may cooperate to execute the programs for realizing the functions. Similarly, a plurality of processors 21, a plurality of processors 31, and a plurality of processors 41 may be included, and the plurality of processors 21 may cooperate, the plurality of processors 31 may cooperate, and the plurality of processors 41 may cooperate to execute the programs for realizing the respective functions.

Referring to FIGS. 6 to 11, operation of the cryptographic system 1 according to the first embodiment will be described.

The operation of the cryptographic system 1 according to the first embodiment corresponds to a cryptographic method according to the first embodiment. The operation of the cryptographic system 1 according to the first embodiment also corresponds to processes of a cryptographic program according to the first embodiment.

Referring to FIG. 6, operation of the setup device 10 according to the first embodiment will be described.

The operation of the setup device 10 according to the first embodiment corresponds to a setup method according to the first embodiment. The operation of the setup device 10 according to the first embodiment also corresponds to processes of a setup program according to the first embodiment.

(Step S11: Acceptance Process)

The acceptance unit 111 accepts input of a security parameter λ, a length n′ of a public attribute vector, and a length n of a secret attribute vector. Both the length n′ of the public attribute vector and the length n of the secret attribute vector are integers of 1 or more.

Specifically, the acceptance unit 111 accepts, via the communication interface 14, the security parameter 1^(λ) input by a user of the setup device 10. The acceptance unit 111 writes the security parameter 1^(λ) in the memory 12.

(Step S12: Basis Generation Process)

The master key generation unit 112 generates params and orthonormal dual bases {B_(ι), B*_(ι)}_(ι∈[n′+n]), using as input the security parameter λ, the length n′ of the public attribute vector, and the length n of the secret attribute vector accepted in step S11.

Specifically, the master key generation unit 112 retrieves the security parameter λ, the length n′ of the public attribute vector, and the length n of the secret attribute vector from the memory 12. The master key generation unit 112 generates params and the dual bases {B_(ι), B*_(ι)}_(ι∈[n′+n]) by executing an algorithm G_(OB) indicated in Formula 141, where N=n′+n, d₀=0, and d₁, . . . , d_(N)=9. The master key generation unit 112 writes params and the dual bases {B_(ι), B*_(ι)}_(ι∈[n′+n]) in the memory 12.

$\begin{matrix} {\mspace{79mu}{{{G_{OB}\left( {N,\left( {d_{0},\ldots\;,d_{N}} \right)} \right)}\text{:}}{{{params}_{\mathbb{G}} = {\left( {q,{\mathbb{G}}_{1},{\mathbb{G}}_{2},{\mathbb{G}}_{T},g_{1},g_{2},e} \right)\overset{R}{\leftarrow}{G_{BGP}0}}},\mspace{79mu}{\psi\overset{U}{\leftarrow}{{\mathbb{F}}_{q}\backslash\left\{ 0 \right\}}},{g_{T} = {{e\left( {g_{1},g_{2}} \right)}\psi}},\mspace{79mu}{{{for}\mspace{14mu}\iota} \in \left\lbrack {0,N} \right\rbrack}}\mspace{79mu}{{{params}_{\mathbb{V}} = {\left( {q,{\mathbb{V}}_{\iota,1},{\mathbb{V}}_{t,2},{\mathbb{G}}_{T},{\mathbb{A}}_{\iota,1},{\mathbb{A}}_{t,2},e} \right)\mspace{79mu}\overset{R}{\leftarrow}{G_{DPVS}\left( {d_{\iota},{params}_{\mathbb{G}}} \right)}}},\mspace{79mu}{B^{(\iota)} = {\left( b_{L,k}^{(\iota)} \right)\overset{U}{\leftarrow}{{GL}\left( {d_{\iota},{\mathbb{F}}_{q}} \right)}}},\mspace{79mu}{B^{*{(\iota)}} = {\left( b_{L,k}^{*{(\iota)}} \right) = {{\psi\left( \left( B^{(\iota)} \right)^{- 1} \right)}T}}},\mspace{79mu}{{{for}\mspace{14mu}{all}\mspace{14mu} L} \in \left\lbrack d_{\iota} \right\rbrack},\mspace{79mu}{{let}\mspace{14mu}{\overset{\rightarrow}{b}}^{({\iota,L})}\mspace{14mu}{and}\mspace{14mu}{\overset{\rightarrow}{b}}^{*{({\iota,L})}}L^{th}\mspace{14mu}{rows}\mspace{14mu}{of}\mspace{14mu} B^{(\iota)}\mspace{14mu}{and}\mspace{14mu} B^{*{(\iota)}}},{b^{({\iota,L})} = {\left( {\overset{\rightarrow}{b}}^{({\iota,L})} \right)\mspace{14mu}{\mathbb{A}}_{\iota,3}}},{b^{*{({\iota,L})}} = {{\left( {\overset{\rightarrow}{b}}^{*{({\iota,L})}} \right)\mspace{11mu}{\mathbb{A}}_{\iota,2}\mspace{14mu}{for}\mspace{14mu} L} \in \left\lbrack d_{\iota} \right\rbrack}},\mspace{79mu}{{\mathbb{B}}_{\iota} = \left\{ {b^{({\iota,1})},\ldots\;,b^{({\iota,d_{\iota}})}} \right\}},{{\mathbb{B}}_{\iota}^{*} = \left\{ {b^{*{({\iota,1})}},\ldots\;,b^{*{({\iota,d_{\iota}})}}} \right\}},\mspace{79mu}{{params} = \left( {\left\{ {params}_{{\mathbb{V}}_{\iota}} \right\}_{\iota \in {\lbrack{0,N}\rbrack}},g_{T}} \right)},\mspace{79mu}{{return}\mspace{14mu}{\left( {{params},\left\{ {{\mathbb{B}}_{\iota},{\mathbb{B}}_{t}^{*}} \right\}_{\iota \in {\lbrack{0,N}\rbrack}}} \right).}}}}} & \left\lbrack {{Formula}\mspace{14mu} 141} \right\rbrack \end{matrix}$

(Step S13: Master Key Generation Process)

The master key generation unit 112 generates a public parameter MPK and a master secret key MSK, using params and the dual bases {B_(ι), B*_(ι)}_(ι∈[n′+n]) generated in step S12.

Specifically, the master key generation unit 112 retrieves params and the dual bases {B_(ι), B*_(ι)}_(ι∈[n′+n]) from the memory 12. The master key generation unit 112 generates a partial basis B{circumflex over ( )}_(ι) and a partial basis B{circumflex over ( )}*_(ι), for each integer ι of ι∈[n′+n], as indicated in Formula 142.

for Θ∈[n′+n]

={b ^((ι,1)) ,b ^((ι,2)) b ^((ι,9)) },

={b* ^((ι,1)) b* ^((ι,2)) b* ^((ι,7)) b* ^((ι,8))}  [Formula 142]

The master key generation unit 112 sets params and the partial basis B{circumflex over ( )}_(ι) for each integer ι of ι∈[n′+n] as the public parameter MPK. The master key generation unit 112 sets the partial basis B{circumflex over ( )}*_(ι) for each integer ι of ι∈[n′+n] as the master secret key MSK. The master key generation unit 112 writes the public parameter MPK and the master secret key MSK in the memory 12.

(Step S14: Transmission Process)

The transmission unit 113 publishes the public parameter MPK generated in step S13. Specifically, the transmission unit 113 retrieves the public parameter MPK from the memory 12. The transmission unit 113 publishes the public parameter MPK by a method such as transmitting it to a server for publication. This allows the encryption device 20, the key generation device 30, and the decryption device 40 to acquire the public parameter MPK.

The transmission unit 113 transmits the master secret key MSK generated in step S13 to the key generation device 30 in secrecy. Specifically, the transmission unit 113 retrieves the master secret key MSK from the memory 12. The transmission unit 113 encrypts the master secret key MSK with an existing encryption scheme and then transmits the master secret key MSK to the key generation device 30.

That is, the setup device 10 executes the PHPE.Setup algorithm indicated in Formula 143.

$\begin{matrix} {\mspace{79mu}{{{{PHPE}.{{Setup}\left( {1^{n^{\prime}},1^{n}} \right)}}\text{:}}{{\left( {{params},\left\{ {{\mathbb{B}}_{\iota},{\mathbb{B}}_{t}^{*}} \right\}_{\iota \in {\lbrack{n^{\prime} + n}\rbrack}}} \right)\overset{R}{\leftarrow}{G_{OB}\left( {{n^{\prime} + n},\left( {0,\overset{\overset{n^{\prime} + n}{︷}}{9,\ldots\;,9}} \right)} \right)}},\mspace{79mu}{{{for}\mspace{14mu}\iota} \in \left\lbrack {n^{\prime} + n} \right\rbrack}}\mspace{79mu}{{{\hat{\mathbb{B}}}_{\iota} = \left\{ {b^{({\iota,1})},b^{({\iota,2})},b^{({\iota,9})}} \right\}},\mspace{79mu}{{\hat{\mathbb{B}}}_{\iota}^{*} = \left\{ {b^{*{({\iota,1})}},b^{*{({\iota,2})}},b^{*{({\iota,7})}},b^{*{({\iota,8})}}} \right\}},\mspace{79mu}{{{output}\mspace{14mu}{MPK}} = \left( {{params},\left\{ {\hat{\mathbb{B}}}_{\iota} \right\}_{\iota \in {\lbrack{n^{\prime} + n}\rbrack}}} \right)},\mspace{79mu}{{MSK} = {\left\{ {\hat{\mathbb{B}}}_{\iota}^{*} \right\}_{\iota \in {\lbrack{n^{\prime} + n}\rbrack}}.}}}}} & \left\lbrack {{Formula}\mspace{14mu} 143} \right\rbrack \end{matrix}$

Referring to FIG. 7, operation of the encryption device 20 according to the first embodiment will be described.

The operation of the encryption device 20 according to the first embodiment corresponds to an encryption method according to the first embodiment. The operation of the encryption device 20 according to the first embodiment also corresponds to processes of an encryption program according to the first embodiment.

(Step S21: Master Key Acquisition Process)

The master key acquisition unit 211 acquires the public parameter MPK generated by the setup device 10.

Specifically, the master key acquisition unit 211 acquires, via the communication interface 24, the public parameter MPK that is published. The master key acquisition unit 211 writes the public parameter MPK in the memory 22.

(Step S22: Vector Acquisition Process)

The vector acquisition unit 212 acquires a public attribute vector x^(→)∈F_(q) ^(n′) and a secret attribute vector z^(→)∈F_(q) ^(n).

Specifically, the vector acquisition unit 212 acquires, via the communication interface 24, the public attribute vector x^(→) and the secret attribute vector z^(→) that are input by a user of the encryption device 20. The vector acquisition unit 212 writes the public attribute vector x^(→) and the secret attribute vector z^(→) in the memory 22.

(Step S23: Encryption Process)

The encryption unit 213 generates a ciphertext CT, using the public parameter MPK acquired in step S21 and the public attribute vector x^(→) and the secret attribute vector z^(→) acquired in step S22.

Specifically, the encryption unit 213 generates the ciphertext CT as described below.

First, the encryption unit 213 samples a value co, as indicated in Formula 144.

Next, the encryption unit 213 samples a value φ′_(ι′) and generates an element c′^((ι′)), for each integer ι′ of ι′∈[n′], as indicated in Formula 145.

$\begin{matrix} {{{{for}\mspace{14mu}\iota^{\prime}} \in \left\lbrack n^{\prime} \right\rbrack}{{\phi_{\iota^{\prime}}^{\prime}\overset{U}{\leftarrow}{\mathbb{F}}_{q}},{c^{\prime{(\iota^{\prime})}} = {\left( {{\omega\left( {1,x_{\iota^{\prime}}} \right)},{\overset{\rightarrow}{0}}^{4},{\overset{\rightarrow}{0}}^{2},\phi_{\iota^{\prime}}^{\prime}} \right)_{{\mathbb{B}}_{\iota}}.}}}} & \left\lbrack {{Formula}\mspace{14mu} 145} \right\rbrack \end{matrix}$

The encryption unit 213 samples a value φ_(ι) and generates an element c^((ι)), for each integer ι of ι∈[n], as indicated in Formula 146.

$\begin{matrix} {{{{for}\mspace{14mu}\iota} \in \lbrack n\rbrack}{{\phi_{\iota}\overset{U}{\leftarrow}{\mathbb{F}}_{q}},{c^{(\iota)} = \left( {{\omega\left( {1,z_{\iota}} \right)},{\overset{\rightarrow}{0}}^{4},{\overset{\rightarrow}{0}}^{2},\phi_{\iota}} \right)_{{\mathbb{B}}_{n^{\prime} + \iota}}}}} & \left\lbrack {{Formula}\mspace{14mu} 146} \right\rbrack \end{matrix}$

Then, the encryption unit 213 sets the public attribute vector x^(→), the element c′^((ι′)) for each integer ι′ of ι′∈[n′], and the element c^((ι)) for each integer ι of ι∈[n] as the ciphertext CT. The encryption unit 213 writes the ciphertext CT in the memory 22.

In the first embodiment, the ciphertext CT includes the element c′^((ι′)) in which the public attribute vector x^(→) is set and the element c^((ι)) in which the secret attribute vector z^(→) is set, over a basis B of the basis B and a basis B*, which are dual bases in dual vector spaces.

(Step S24: Transmission Process)

The transmission unit 214 transmits the ciphertext CT generated in step S23 to the decryption device 40.

Specifically, the transmission unit 214 retrieves the ciphertext CT from the memory 22. The transmission unit 214 transmits the ciphertext CT to the decryption device 40 via the communication interface 24.

That is, the encryption device 20 executes the PHPE.Encrypt algorithm indicated in Formula 147.

$\begin{matrix} {{{{PHPE}.{{Encrypt}\left( {{MPK},\left( {\overset{\rightarrow}{x},\overset{\rightarrow}{z}} \right)} \right)}}\text{:}}{{\omega\overset{U}{\leftarrow}{\mathbb{F}}_{q}},{{{for}\mspace{14mu}\iota^{\prime}} \in \left\lbrack n^{\prime} \right\rbrack}}{{\phi_{\iota^{\prime}}^{\prime}\overset{U}{\leftarrow}{\mathbb{F}}_{q}},{c^{\prime{(\iota^{\prime})}} = \left( {{\omega\left( {1,x_{\iota^{\prime}}} \right)},{\overset{\rightarrow}{0}}^{4},{\overset{\rightarrow}{0}}^{2},\phi_{\iota^{\prime}}^{\prime}} \right)_{{\mathbb{B}}_{\iota^{\prime}}}},{{{for}\mspace{14mu}\iota} \in \lbrack n\rbrack}}{{\phi_{\iota}\overset{U}{\leftarrow}{\mathbb{F}}_{q}},{c^{(\iota)} = \left( {{\omega\left( {1,z_{\iota}} \right)},{\overset{\rightarrow}{0}}^{4},{\overset{\rightarrow}{0}}^{2},\phi_{\iota}} \right)_{{\mathbb{B}}_{n^{\prime} + \iota}}},{{{output}\mspace{14mu}{CT}} = {\left( {\overset{\rightarrow}{x},\left\{ c^{\prime{(\iota^{\prime})}} \right\}_{\iota^{\prime} \in {\lbrack n^{\prime}\rbrack}},\left\{ c^{(\iota)} \right\}_{\iota \in {\lbrack n\rbrack}}} \right).}}}} & \left\lbrack {{Formula}\mspace{14mu} 147} \right\rbrack \end{matrix}$

Referring to FIG. 8, operation of the key generation device 30 according to the first embodiment will be described.

The operation of the key generation device 30 according to the first embodiment corresponds to a key generation method according to the first embodiment. The operation of the key generation device 30 according to the first embodiment also corresponds to processes of a key generation program according to the first embodiment.

(Step S31: Master Key Acquisition Process)

The master key acquisition unit 311 acquires the public parameter MPK and the master secret key MSK that are generated by the setup device 10.

Specifically, the master key acquisition unit 311 acquires, via the communication interface 34, the public parameter MPK that is published, and acquires the master secret key MSK transmitted by the setup device 10. The master key acquisition unit 311 writes the public parameter MPK and the master secret key MSK in the memory 32.

(Step S32: Function Acquisition Process)

The function acquisition unit 312 acquires a function f∈F^((q,n′,n)) _(ABP∘IP).

Specifically, the function acquisition unit 312 acquires, via the communication interface 34, the function f input by a user of the key generation device 30. The function acquisition unit 312 writes the function fin the memory 32.

(Step S33: PGB Computation Process)

The PGB computation unit 313 computes a set of constants ({σ_(j)}_(j∈[n]), {α_(j′), γ_(j′)}_(j′∈[m]))∈F_(q) ^(n)×(F_(q) ²)^(m) for specifying shares and a function ρ: [m]→[n′] by executing the PGB algorithm, using as input the function f acquired in step S32, as indicated in Formula 148.

Referring to FIG. 9, a PGB computation process according to the first embodiment will be described.

(Step S331: Matrix Representation L Generation Process)

Let Γ′ denote an ABP computing the function f. The ABP Γ′ has m+n+1 vertices, and a variable z_(j) is set only in edges leading into the sink vertex. Every vertex has only one outgoing edge.

The PGB computation unit 313 computes a matrix representation L∈F_(q) ^((m+n)×(m+n)) representing the ABP Γ′. As described above, the matrix L is obtained by removing the column corresponding to V₀ and the row corresponding to V₁ from the matrix A_(Γ′)−I, where the matrix Ar is the adjacency matrix for Γ and I is the identity matrix.

Then, the following (1) to (4) hold.

(1) For all (x^(→), z^(→))∈F_(q) ^(n′)××F_(q) ^(n), det(L(x^(→), z^(→)))=f(x^(→), z^(→)) holds.

(2) For each integer j′ of j′∈[m], each entry in the j′th row of the matrix representation L is a degree one polynomial function in one variable x_(ι′) (ι′∈[n′]) with coefficients in F_(q) or a constant in F_(q).

(3) The matrix representation L contains only −1's in the second diagonal, and contains only 0's below the second diagonal.

(4) The last column of the matrix representation L is (0, . . . , 0, z₁, . . . , z_(n)).

(Step S332: Function ρ Generation Process)

The PGB computation unit 313 generates the function ρ: [m]→[n′] by setting p(j′)=ι′ if the variable x_(ι′) is included in the j′th row of the matrix representation L, for each integer j′ of j′∈[m]. The PGB computation unit 313 writes the function ρ in the memory 32.

(Step S333: Constant Computation Process)

The PGB computation unit 313 chooses a vector r^(→), as indicated in Formula 149.

The PGB computation unit 313 computes a set of constants ({σ_(j)}_(j∈[n]), {α_(j′),γ_(j′)}_(j′∈[m]))∈F_(q) ^(n)×(F_(q) ²)^(m), using the matrix representation L generated in step S331 and the vector r^(→), as indicated in Formula 150.

By this, the set of constants ({σ_(j)}_(j∈[n]), {α_(j′),γ_(j′)}_(j′∈[m])) is generated. The PGB computation unit 313 writes the set of constants ({σ_(j)}_(j∈[n]), {α_(j′),γ_(j′)}_(j′∈[m])) in the memory 32. The set of constants ({σ_(j)}_(j∈[n]), {α_(j′),γ_(j′)}_(j′∈[m])) is referred to as a predicate vector of the ABP.

(Step S34: Key Generation Process)

The key generation unit 314 generates a decryption key SK(f), using the public parameter MPK and the master secret key MSK acquired in step S31, the function f acquired in step S32, and the set of constants ({σ_(j)}_(j∈[n]), {α_(j′),γ_(j′)}_(j′∈[m])) generated in step S33.

Specifically, the key generation unit 314 generates the decryption key SK(f) as described below.

First, the key generation unit 314 samples a value ζ, as indicated in Formula 151.

Next, the key generation unit 314 samples κ^(→)′^((j′)) and generates an element k′^((j′)), for each integer j′ of j′∈[m], as indicated in Formula 152.

$\begin{matrix} {{{{for}\mspace{14mu} j^{\prime}} \in \lbrack m\rbrack}{{{\overset{\rightarrow}{\kappa}}^{\prime{(j^{\prime})}}\overset{U}{\leftarrow}{\mathbb{F}}_{q}^{2}},{k^{\prime{(j^{\prime})}} = \left( {\left( {\gamma_{j^{\prime}},\alpha_{j^{\prime}}} \right),{\overset{\rightarrow}{0}}^{4},{\overset{\rightarrow}{\kappa}}^{\prime{(j^{\prime})}},0} \right)_{{\mathbb{B}}_{p{(j^{\prime})}}^{*}}}}} & \left\lbrack {{Formula}\mspace{14mu} 152} \right\rbrack \end{matrix}$

The key generation unit 314 samples κ^(→(j)) and generates an element k^((j)), for each integer j of j∈[n], as indicated in Formula 153.

$\begin{matrix} {{{{for}\mspace{14mu} j} \in \lbrack n\rbrack}{{{\overset{\rightarrow}{\kappa}}^{(j)}\overset{U}{\leftarrow}{\mathbb{F}}_{q}^{2}},{k^{(j)} = \left( {\left( {\sigma_{j},ϛ} \right),{\overset{\rightarrow}{0}}^{4},{\overset{\rightarrow}{\kappa}}^{(j)},0} \right)_{{\mathbb{B}}_{n^{\prime} + j}^{*}}}}} & \left\lbrack {{Formula}\mspace{14mu} 153} \right\rbrack \end{matrix}$

Then, the key generation unit 314 sets the function f, the element k′^((j′)) for each integer j′ of j′∈[m], and the element k^((j)) for each integer j of j∈[n] as the decryption key SK(f). The key generation unit 314 writes the decryption key SK(f) in the memory 32.

In the first embodiment, the decryption key SK(f) includes the element k′^((j′)) and the element k^((j)) in which the predicate vector of ABP is set, over the basis B* of the basis B and the basis B*, which are dual bases in dual vector spaces.

(Step S35: Transmission Process)

The transmission unit 315 transmits the decryption key SK(f) generated in step S34 to the decryption device 40 in secrecy.

Specifically, the transmission unit 315 retrieves the decryption key SK(f) from the memory 32. The transmission unit 315 encrypts the decryption key SK(f) with an existing encryption scheme and then transmits the decryption key SK(f) to the decryption device 40 via the communication interface 34.

That is, the key generation device 30 executes the PHPE.KeyGen algorithm indicated in Formula 154.

$\begin{matrix} {\mspace{79mu}{{{{PHPE}.{{KeyGen}\left( {{MPK},{MSK},f} \right)}}\text{:}}\mspace{79mu}{{\left( {\left( {\left\{ \sigma_{j} \right\}_{j \in {\lbrack n\rbrack}},\left\{ {\alpha_{j^{\prime}},\gamma_{j^{\prime}}} \right\}_{j^{\prime} \in {\lbrack m\rbrack}}} \right),\mspace{79mu}{\rho:\left. \lbrack m\rbrack\rightarrow\left\lbrack n^{\prime} \right\rbrack \right.}} \right)\overset{R}{\leftarrow}{{PGB}(f)}},\mspace{79mu}{ϛ\overset{U}{\leftarrow}{\mathbb{F}}_{q}},\mspace{79mu}{{{for}\mspace{14mu} j^{\prime}} \in \lbrack m\rbrack}}{{{\overset{\rightarrow}{\kappa}}^{\prime{(j^{\prime})}}\overset{U}{\leftarrow}{\mathbb{F}}_{q}^{2}},{k^{\prime{(j^{\prime})}} = \left( {\left( {\gamma_{j^{\prime}},\alpha_{j^{\prime}}} \right),{\overset{\rightarrow}{0}}^{4},{\overset{\rightarrow}{\kappa}}^{\prime{(j^{\prime})}},0} \right)_{{\mathbb{B}}_{p{(j^{\prime})}}^{*}}},\mspace{79mu}{{{for}\mspace{14mu} j} \in \lbrack n\rbrack}}\mspace{79mu}{{{\overset{\rightarrow}{\kappa}}^{(j)}\overset{U}{\leftarrow}{\mathbb{F}}_{q}^{2}},{k^{(j)} = \left( {\left( {\sigma_{j},ϛ} \right),{\overset{\rightarrow}{0}}^{4},{\overset{\rightarrow}{\kappa}}^{(j)},0} \right)_{{\mathbb{B}}_{n^{\prime} + j}^{*}}},\mspace{79mu}{{{output}\mspace{14mu}{{SK}(f)}} = {\left( {f,\left\{ k^{\prime{(j^{\prime})}} \right\}_{j^{\prime} \in {\lbrack m\rbrack}},\left\{ k^{(j)} \right\}_{j \in {\lbrack n\rbrack}}} \right).}}}}} & \left\lbrack {{Formula}\mspace{14mu} 154} \right\rbrack \end{matrix}$

Referring to FIG. 10, operation of the decryption device 40 according to the first embodiment will be described.

The operation of the decryption device 40 according to the first embodiment corresponds to a decryption method according to the first embodiment. The operation of the decryption device 40 according to the first embodiment also corresponds to processes of a decryption program according to the first embodiment.

(Step S41: Public Key Acquisition Process)

The master key acquisition unit 411 acquires the public parameter MPK generated by the setup device 10.

Specifically, the master key acquisition unit 411 acquires, via the communication interface 44, the public parameter MPK that is published. The master key acquisition unit 411 writes the public parameter MPK in the memory 42.

(Step S42: Ciphertext Acquisition Process)

The ciphertext acquisition unit 412 acquires the ciphertext CT generated by the encryption device 20.

Specifically, the ciphertext acquisition unit 412 acquires, via the communication interface 44, the ciphertext CT transmitted by the encryption device 20. The ciphertext acquisition unit 412 writes the ciphertext CT in the memory 42.

(Step S43: Decryption key acquisition process)

The decryption key acquisition unit 413 acquires the decryption key SK(f) generated by the key generation device 30.

Specifically, the decryption key acquisition unit 413 acquires, via the communication interface 44, the decryption key SK(f) transmitted by the key generation device 30. The decryption key acquisition unit 413 writes the decryption key SK(f) in the memory 42.

(Step S44: Decryption Process)

The decryption unit 414 decrypts the ciphertext CT by performing a pairing operation on the ciphertext CT acquired in step S42 and the decryption key SK(f) acquired in step S43.

Referring to FIG. 11, a decryption process according to the first embodiment will be described.

(Step S441: Cofactor Computation Process)

The cofactor computation unit 415 computes a set of coefficients (({Ω_(j)}_(j∈[n]), {Ω′_(j′)}_(j′∈[m]))∈F_(q) ^(n)×F_(q) ^(n′) by executing the REC algorithm, using as input the function f included in the decryption key SK(f) and the public attribute vector x^(→) included in the ciphertext CT, as indicated in Formula 155.

({Ω_(j)}_(j∈[n]),{Ω′_(j′)}_(j′∈[m]))=REC(f,x )  [Formula 155]

Specifically, the cofactor computation unit 415 generates a matrix representation L of the function f and a function ρ, as in the processes of steps S331 to S332 of FIG. 9. Then, the cofactor computation unit 415 computes cofactors of elements in the last column of the matrix representation L. The cofactor computation unit 415 sets the computed cofactors as the set of coefficients (({Ω_(j)}_(j∈[n]), {Ω′_(j′)}_(j′∈[m])) in order of entries. Note that the first m+n−1 columns of the matrix representation L contain only variables {x_(ι′)}_(ι′∈[n′]). Thus, the cofactors can be computed using the public attribute vector x^(→).

The cofactor computation unit 415 writes the set of coefficients (({Ω_(j)}_(j∈[n]), {Ω′_(j′)}_(j′∈[m])) in the memory 42.

(Step S442: Pairing Operation Process)

The pairing operation unit 416 performs a pairing operation on an element c′⁽ρ(j′)) and an element k′^((j′)) to compute an operation value Λ′_(j′), for each integer j′ of j′∈[m], as indicated in Formula 156. Note that the function ρ is the function generated in step S441.

Λ′_(j′) =e(c′ ^((ρ(j′))),k′ ^((j′))) for j′∈[m]  [Formula 156]

The pairing operation unit 416 performs a pairing operation on an element c^((j)) and an element k^((j)) to compute an operation value Λ_(j), for each integer j of j∈[n], as indicated in Formula 157.

Λ_(j) =e(c ^((j)) ,k ^((j))) for j∈[n]  [Formula 157]

The pairing operation unit 416 writes the operation value Λ′_(j′) and the operation value Λ_(j) in the memory 42.

(Step S443: Output Value Computation Process)

The output value computation unit 417 retrieves the set of coefficients (({Ω_(j)}_(j∈[n]), {Ω′_(j)}_(j′∈[m])) computed in step S441 and the operation value Λ′_(j′) and the operation value Λ_(j) computed in step S442 from the memory 42. The output value computation unit 417 computes an operation value Λ, as indicated in Formula 158.

$\begin{matrix} {\Lambda = {\left( {\prod\limits_{j^{\prime} \in {\lbrack m\rbrack}}{\Lambda_{j^{\prime}}^{\prime}}^{\Omega_{j^{\prime}}^{\prime}}} \right)\left( {\prod\limits_{j \in {\lbrack n\rbrack}}{\Lambda_{j}}^{\Omega_{j}}} \right)}} & \left\lbrack {{Formula}\mspace{14mu} 158} \right\rbrack \end{matrix}$

The output value computation unit 417 outputs 1 as an output value if Λ is the identity element of the group G_(T), and outputs 0 as an output value otherwise.

That is, the decryption device 40 executes the PHPE.Decrypt algorithm indicated in Formula 159.

$\begin{matrix} {{{{PHPE}.{{Decrypt}\left( {{MPK},{{SK}(f)},{CT}} \right)}}\text{:}}{{\left( {\left\{ \Omega_{j} \right\}_{j \in {\lbrack n\rbrack}},\left\{ \Omega_{j^{\prime}}^{\prime} \right\}_{j^{\prime} \in {\lbrack m\rbrack}}} \right) = {{REC}\left( {f,\overset{\rightarrow}{x}} \right)}},{\Lambda_{j^{\prime}}^{\prime} = {{{e\left( {c^{\prime{({\rho{(j^{\prime})}})}},k^{\prime{(j^{\prime})}}} \right)}\mspace{14mu}{for}\mspace{14mu} j^{\prime}} \in \lbrack m\rbrack}},{\Lambda_{j} = {{{e\left( {c^{(j)},k^{(j)}} \right)}\mspace{14mu}{for}\mspace{14mu} j} \in \lbrack n\rbrack}},{\Lambda = {\left( {\prod\limits_{j^{\prime} \in {\lbrack m\rbrack}}{\Lambda_{j^{\prime}}^{\prime}}^{\Omega_{j^{\prime}}^{\prime}}} \right)\left( {\prod\limits_{j \in {\lbrack n\rbrack}}{\Lambda_{j}}^{\Omega_{j}}} \right)}},{{output}\mspace{14mu} 1},{{{if}\mspace{14mu}\Lambda} = 1_{{\mathbb{G}}_{T}}},{{and}\mspace{14mu} 0\mspace{14mu}{{otherwise}.}}}} & \left\lbrack {{Formula}\mspace{14mu} 159} \right\rbrack \end{matrix}$

The operation value and the operation value A_(A) are as indicated in Formula 160.

Λ′_(j′) =g _(T) ^(ω(α) ^(j) ^(x) ^(ρ(j′)) ^(+γ) ^(j′) ⁾ for j′∈[m],

Λ_(j) =g _(T) ^(ω(ζz) ^(j) ^(+σ) ^(j) ⁾ for j∈[n]  [Formula 160]

The operation value A is as indicated in Formula 161.

Λ=g _(T) ^(ωζf({right arrow over (x)},{right arrow over (z)}))  [Formula 161]

Therefore, except when ω=0 or ζ=0, Formula 162 holds if R^(ABP∘IP)(f, (x^(→), z^(→)))=1, that is, f(x^(→), z^(→))=0, and Formula 163 holds if R^(ABP∘IP)(f, (x^(→), z^(→)))≠1, that is, f(x^(→), z^(→))≠0.

Λ=

  [Formula 162]

Λ≠

  [Formula 163]

The reason why Formula 161 holds will be described.

As indicated in Formula 164, for any z^(→), f(x^(→), z^(→)) can be computed by concatenating the sets of coefficients (({Ω_(j)}_(j∈[n]), {Ω′_(j′)}_(j′∈[m])) and ({z_(j)+σ_(j)}_(j∈[n]), {α_(j′)z_(ρ(j′))+γ_(j′)}_(j′∈[m])).

$\begin{matrix} {{f\left( {\overset{\rightarrow}{x},\overset{\rightarrow}{z}} \right)} = {{\sum\limits_{j^{\prime} \in {\lbrack m\rbrack}}\;{\Omega_{j^{\prime}}^{\prime}\left( {{\alpha_{j^{\prime}}x_{\rho{(j^{\prime})}}} + \gamma_{j^{\prime}}} \right)}} + {\sum\limits_{j \in {\lbrack n\rbrack}}{\Omega_{j}\left( {z_{j} + \sigma_{j}} \right)}}}} & \left\lbrack {{Formula}\mspace{14mu} 164} \right\rbrack \end{matrix}$

Note that Formula 164 corresponds to computing det(L′(x^(→), z^(→))). A matrix representation L′ is a matrix representation obtained by replacing the last column in the matrix representation L with Formula 165.

(α₁ x _(ρ(1))+γ₁, . . . ,α_(m) x _(ρ(m))+γ_(m) ,z ₁+σ₁ , . . . ,z _(n)+σ_(n))^(T)  [Formula 165]

Therefore, Formula 166 holds and it can be known that Formula 164 holds.

$\begin{matrix} {{\det\left( {L^{\prime}\left( {\overset{\rightarrow}{x},\overset{\rightarrow}{z}} \right)} \right)} = {{{\det\left( {L\left( {\overset{\rightarrow}{x},\overset{\rightarrow}{z}} \right)} \right)}{\begin{matrix} 1 & \; & \; & r_{1} \\ \; & \ddots & \; & \vdots \\ \; & \; & 1 & r_{m + n - 1} \\ \; & \; & \; & 1 \end{matrix}}} = {{{\det\left( {L\left( {\overset{\rightarrow}{x},\overset{\rightarrow}{z}} \right)} \right)} \cdot 1} = {f\left( {\overset{\rightarrow}{x},\overset{\rightarrow}{z}} \right)}}}} & \left\lbrack {{Formula}\mspace{14mu} 166} \right\rbrack \end{matrix}$

Note that r^(→)=(r₁, . . . , r_(m+n−1))∈F_(q) ^(m+n−1) is the randomness used by the PBG when generating the set of constants ({σ_(j)}_(j∈[n]), {α_(j′),γ_(j′)}_(j′∈[m])).

Then, Formula 167 holds.

$\begin{matrix} {{{vf}\left( {\overset{\rightarrow}{x},\overset{\rightarrow}{z}} \right)} = {{\sum\limits_{j^{\prime} \in {\lbrack m\rbrack}}\;{\Omega_{j^{\prime}}^{\prime}\overset{\sim}{v}\left( {{\alpha_{j^{\prime}}x_{\rho{(j^{\prime})}}} + \gamma_{j^{\prime}}} \right)}} + {\sum\limits_{j \in {\lbrack n\rbrack}}{\Omega_{j}\left( {{vz}_{j} + {\overset{\sim}{v}\sigma_{j}}} \right)}}}} & \left\lbrack {{Formula}\mspace{14mu} 167} \right\rbrack \end{matrix}$

This is because the first m entries of the last column are 0's so that Formula 168 holds.

$\begin{matrix} {{\det\left( {L\left( {\overset{\rightarrow}{x},\overset{\rightarrow}{z}} \right)} \right)} = {\sum\limits_{j \in {\lbrack n\rbrack}}{\Omega_{j}z_{j}}}} & \left\lbrack {{Formula}\mspace{14mu} 168} \right\rbrack \end{matrix}$

Therefore, Formula 169 holds.

$\begin{matrix} {{{{\overset{\sim}{v}\left\lbrack {{\sum\limits_{j^{\prime} \in {\lbrack m\rbrack}}\;{\Omega_{j^{\prime}}^{\prime}\left( {{\alpha_{j^{\prime}}x_{\rho{(j^{\prime})}}} + \gamma_{j^{\prime}}} \right)}} + {\sum\limits_{j \in {\lbrack n\rbrack}}{\Omega_{j}\left( {z_{j} + \sigma_{j}} \right)}}} \right\rbrack} + {\left( {v - \overset{\sim}{v}} \right){\sum\limits_{j \in {\lbrack n\rbrack}}{\Omega_{j}z_{j}}}}} = {{{\overset{\sim}{v}{\det\left( {L\left( {\overset{\rightarrow}{x},\overset{\rightarrow}{z}} \right)} \right)}} + {\left( {v - \overset{\sim}{v}} \right){\det\left( {L\left( {\overset{\rightarrow}{x},\overset{\rightarrow}{z}} \right)} \right)}}} = {\det\left( {L\left( {\overset{\rightarrow}{x},\overset{\rightarrow}{z}} \right)} \right)}}},{{{as}\mspace{14mu}{\det\left( {L^{\prime}\left( {\overset{\rightarrow}{x},\overset{\rightarrow}{z}} \right)} \right)}} = {\det\left( {L\left( {\overset{\rightarrow}{x},\overset{\rightarrow}{z}} \right)} \right)}}} & \left\lbrack {{Formula}\mspace{14mu} 169} \right\rbrack \end{matrix}$

*** Effects of First Embodiment ***

As described above, in the cryptographic system 1 according to the first embodiment, a ciphertext is decrypted by performing a pairing operation on the ciphertext in which an attribute vector is set over a basis B and a decryption key in which a predicate vector of ABP is set over a basis B*, the basis B and the basis B* being dual bases in dual vector spaces. This makes it possible to realize a predicate encryption scheme that allows a wide range of predicates and also allows security to be enhanced.

*** Other Configurations ***

<First Variation>

In the first embodiment, the KP-PHPE scheme has been described. The KP-PHPE scheme described in the first embodiment can be converted into a Cipher-Policy (CP)-PHPE scheme. CP signifies that information for access control is set in a ciphertext. The information for access control in the first embodiment is the function f and the set of constants ({σ_(j)}_(j∈[n]), {α_(j′), γ_(j′)}_(j′∈[m])).

Accordingly, in the case of the CP-PHPE scheme, in the PHPE.Encrypt algorithm, a set of constants ({σ_(j)}_(j∈[n]), {α_(j′),γ_(j′)}_(j′∈[m])) is generated by executing the PGB algorithm, using as input a function f. In the PHPE.Encrypt algorithm, an element c′^((j′)) and an element c^((j)) in which a set of constants ({σ_(j)}_(j∈[n]), {α_(j′),γ_(j′)}_(j′∈[m])) is set, which correspond to the element k′^((j′)) and the element k^((j)) in the first embodiment, are generated. Then, the function f, the element c′^((j′)), and the element c^((j)) are set as a ciphertext CT.

In the case of the CP-PHPE scheme, in the PHPE.KeyGen algorithm, an element k′^((ι′)) in which a public attribute vector x^(→) is set, which corresponds to the element c′^((ι′)) in the first embodiment, is generated, and an element k^((ι)) in which a secret attribute vector z^(→) is set, which corresponds to the element c^((ι)) in the first embodiment, is generated. Then, the public attribute vector x^(→), the element k′^((ι′)), and the element k^((ι)) are set as a decryption key SK(f).

<Second Variation>

In the first embodiment, the basis B_(ι) and the basis B*_(ι) are generated for each integer ι of ι∈[n′+n]. Then, a different basis is used for each element of the public attribute vector x^(→) and the secret attribute vector z^(→). However, by using an indexing technique, the PHPE scheme can be realized using only one pair of dual bases, the basis B and the basis B*. This can make the scheme unbounded.

Specifically, for example, two dimensions are added to the dimensions of the basis B and the basis B*. Then, using the added two dimensions, indices according to the elements of the public attribute vector x^(→) and the secret attribute vector z^(→) are set in the element c′^((ι′)) and the element c^((ι)) of the ciphertext CT and the element k′^((j′)) and the element k^((j)) of the decryption key SK(f). At this time, the indices are set in the element c′^((ι′)) and the element c^((ι)) of the ciphertext CT and the element k′^((j′)) and the element k^((j)) of the decryption key SK(f) such that performing a pairing operation results in a value of 0 between the added two dimensions.

<Third Variation>

In the first embodiment, the functional components are realized by software. However, as a third variation, the functional components may be realized by hardware. With regard to this third variation, differences from the first embodiment will be described.

Referring to FIG. 12, a configuration of the setup device 10 according to the third variation will be described.

When the functional components are realized by hardware, the setup device 10 includes an electronic circuit 15 in place of the processor 11, the memory 12, and the storage 13. The electronic circuit 15 is a dedicated circuit that realizes the functions of the functional components, the memory 12, and the storage 13.

Referring to FIG. 13, a configuration of the encryption device 20 according to the third variation will be described.

When the functional components are realized by hardware, the encryption device 20 includes an electronic circuit 25 in place of the processor 21, the memory 22, and the storage 23. The electronic circuit 25 is a dedicated circuit that realizes the functions of the functional components, the memory 22, and the storage 23.

Referring to FIG. 14, a configuration of the key generation device 30 according to the third variation will be described.

When the functional components are realized by hardware, the key generation device 30 includes an electronic circuit 35 in place of the processor 31, the memory 32, and the storage 33. The electronic circuit 35 is a dedicated circuit that realizes the functions of the functional components, the memory 32, and the storage 33.

Referring to FIG. 15, a configuration of the decryption device 40 according to the third variation will be described.

When the functional components are realized by hardware, the decryption device 40 includes an electronic circuit 45 in place of the processor 41, the memory 42, and the storage 43. The electronic circuit 45 is a dedicated circuit that realizes the functions of the functional components, the memory 42, and the storage 43.

Each of the electronic circuits 15, 25, 35, and 45 is assumed to be a single circuit, a composite circuit, a programmed processor, a parallel-programmed processor, a logic IC, a gate array (GA), an application specific integrated circuit (ASIC), or a field-programmable gate array (FPGA).

The respective functional components may be realized by one electronic circuit 15, one electronic circuit 25, one electronic circuit 35, and one electronic circuit 45, or the respective functional components may be distributed among and realized by a plurality of electronic circuits 15, a plurality of electronic circuits 25, a plurality of electronic circuits 35, and a plurality of electronic circuits 45.

<Fourth Variation>

As a fourth variation, some of the functional components may be realized by hardware, and the rest of the functional components may be realized by software.

Each of the processors 11, 21, 31, 41, the memories 12, 22, 32, 42, the storages 13, 23, 33, 43, and the electronic circuits 15, 25, 35, 45 is referred to as processing circuitry. That is, the functions of the functional components are realized by the processing circuitry.

Second Embodiment

In a second embodiment, a Key-Encapsulation Mechanism (KEM) scheme converted from the PHPE scheme described in the first embodiment will be described. In the second embodiment, differences from the first embodiment will be described, and description of the same portions will be omitted.

*** Description of Configurations ***

<Construction of KEM Version PHPE>

In the second embodiment, a KEM version KP-PHPE scheme will be described.

The KEM version KP-PHPE scheme includes a PHPE.Setup algorithm, a PHPE.Encrypt algorithm, a PHPE.KeyGen algorithm, and a PHPE.Decrypt algorithm.

The PHPE.Setup algorithm takes as input a security parameter λ, a length n′ of a public attribute vector, and a length n of a secret attribute vector, and outputs a public parameter MPK and a master secret key MSK.

The PHPE.Encrypt algorithm takes as input the public parameter MPK, a public attribute vector x^(→)∈F_(q) ^(n′), and a secret attribute vector z^(→)∈F_(q) ^(n), and outputs a ciphertext CT and a session key KEM.

The PHPE.KeyGen algorithm takes as input the public parameter MPK, the master secret key MSK, and a function f∈F^((q,n′,n)) _(ABP∘IP), and outputs a decryption key SK(f).

The PHPE.Decrypt algorithm takes as input the public parameter MPK, a pair of the function f∈F^((q,n′,n)) _(ABP∘IP) and the decryption key SK(f) for the function f, and a pair of the public attribute vector x^(→) and the ciphertext CT concerning the public attribute vector x^(→), and outputs a session key^(˜).

*** Description of Operation ***

Referring to FIGS. 6 to 11, operation of the cryptographic system 1 according to the second embodiment will be described.

The operation of the cryptographic system 1 according to the second embodiment corresponds to a cryptographic method according to the second embodiment. The operation of the cryptographic system 1 according to the second embodiment also corresponds to processes of a cryptographic program according to the second embodiment.

Referring to FIG. 6, operation of the setup device 10 according to the second embodiment will be described.

The operation of the setup device 10 according to the second embodiment corresponds to a setup method according to the second embodiment. The operation of the setup device 10 according to the second embodiment also corresponds to processes of a setup program according to the second embodiment.

The processes of steps S11 and S14 are the same as those in the first embodiment.

(Step S12: Basis Generation Process)

The master key generation unit 112 generates params and orthonormal dual bases {B_(ι), B*_(ι)}_(ι∈[0,n′+n]), using as input the security parameter λ, the length n′ of the public attribute vector, and the length n of the secret attribute vector accepted in step S11.

Specifically, the master key generation unit 112 generates params and the dual bases {B_(ι), B*_(ι)}_(ι∈[n′+n]) by executing the same algorithm G_(OB) as that in the first embodiment, where N=n′+n+1, d₀=6, and d₁, . . . , d_(N)=9. Differences from the first embodiment are N=n′+n+1 and d₀=6.

(Step S13: Master Key Generation Process)

The master key generation unit 112 generates a public parameter MPK and a master secret key MSK, using params and the dual bases {B_(ι), B*_(ι)}_(ι∈[0,n′+n]) generated in step S12.

Specifically, the master key generation unit 112 generates a partial basis B{circumflex over ( )}₀ and a partial basis B{circumflex over ( )}*₀, as indicated in Formula 170, and generates a partial basis B{circumflex over ( )}_(ι) and a partial basis B{circumflex over ( )}*_(ι), for each integer ι of ι∈[n′+n], as indicated in Formula 171.

={b ^((0,1)) ,b ^((0,4)) ,b ^((0,6)) },

={b* ^((0,1)) ,b* ^((0,4)) ,b* ^((0,5))}  [Formula 170]

for ι∈[n′+n]

={b ^((ι,1)) ,b ^((ι,2)) ,b ^((ι,9)) },

={b* ^((ι,1)) ,b* ^((ι,2)) ,b* ^((ι,7)) ,b* ^((ι,8))}  [Formula 171]

The master key generation unit 112 sets params and the partial basis B{circumflex over ( )}_(ι) for each integer ι of ι∈[0, n′+n] as the public parameter MPK. The master key generation unit 112 sets the partial basis B{circumflex over ( )}*_(ι) for each integer ι of ι∈[0, n′+n] as the master secret key MSK.

That is, the setup device 10 execute the PHPE.Setup algorithm indicated in Formula 172.

$\begin{matrix} {{{{PHPE}.{{Setup}\left( {1^{n^{\prime}},1^{n}} \right)}}\text{:}}{{\left( {{params},\left\{ {{\mathbb{B}}_{l},{\mathbb{B}}_{l}^{*}} \right\}_{l \in {\lbrack{0,{n^{\prime} + n}}\rbrack}}} \right)\overset{R}{\leftarrow}{G_{OB}\left( {{n^{\prime} + n + 1},\left( {6,\overset{\overset{n^{\prime} + n}{︷}}{9,\ldots\;,9}} \right)} \right)}},{{\hat{\mathbb{B}}}_{0}\left\{ {b^{({0,1})},b^{({0,4})},b^{({0,6})}} \right\}},{{{\hat{\mathbb{B}}}_{0}^{*}\left\{ {b^{*{({0,1})}},b^{*{({0,4})}},b^{*{({0,5})}}} \right\}\mspace{14mu}{for}\mspace{14mu} l} \in \left\lbrack {n^{\prime} + n} \right\rbrack}}\;{{{\hat{\mathbb{B}}}_{l}\left\{ {b^{({l,1})},b^{({l,2})},b^{({l,9})}} \right\}},{{\hat{\mathbb{B}}}_{l}^{*}\left\{ {b^{*{({l,1})}},b^{*{({l,2})}},b^{*{({l,7})}},b^{*{({l,8})}}} \right\}},{{{output}\mspace{14mu}{MPK}} = \left( {{params},\left\{ {\hat{\mathbb{B}}}_{l} \right\}_{l \in {\lbrack{0,{n^{\prime} + n}}\rbrack}}} \right)},{{MSK} = {\left\{ {\hat{\mathbb{B}}}_{l}^{*} \right\}_{l \in {\lbrack{0,{n^{\prime} + n}}\rbrack}}.}}}} & \left\lbrack {{Formula}\mspace{14mu} 172} \right\rbrack \end{matrix}$

Referring to FIG. 7, operation of the encryption device 20 according to the second embodiment will be described.

The operation of the encryption device 20 according to the second embodiment corresponds to an encryption method according to the second embodiment. The operation of the encryption device 20 according to the second embodiment also corresponds to processes of an encryption program according to the second embodiment.

The processes other than step S23 are the same as those in the first embodiment.

(Step S23: Encryption Process)

The encryption unit 213 generates a ciphertext CT, using the public parameter MPK acquired in step S21 as well as the public attribute vector x^(→) and the secret attribute vector z^(→) acquired in step S22.

Specifically, the encryption unit 213 generates the ciphertext CT as described below.

First, the encryption unit 213 samples values ω, ξ, and φ′₀, as indicated in Formula 173.

Next, the encryption unit 213 generates an element c′⁽⁰⁾, as indicated in Formula 174.

c′ ⁽⁰⁾=(ω, 0 ₂,ξ,0,ϕ′₀)

  [Formula 174]

The encryption unit 213 sets g_(T) ^(ξ) as a session key KEM. Furthermore, the encryption unit 213 generates an element c′^((ι′)) for each integer ι′ of ι′∈[n′] and generates an element c^((ι)) for each integer ι of ι∈[n], as in the first embodiment.

Then, the encryption unit 213 sets the public attribute vector x^(→), the element c′⁽⁰⁾, the element c′^((ι′)) for each integer ι′ of ι′[n′], and the element c^((ι)) for each integer ι of ι∈[n] as the ciphertext CT.

That is, the encryption device 20 executes the PHPE.Encrypt algorithm indicated in Formula 175.

$\begin{matrix} {{PHPE}.{{Encrypt}\left( {{MPK},{\left( {\overset{\rightarrow}{x},\overset{\rightarrow}{z}} \right)\text{:}\omega},\xi,{\phi_{0}^{\prime}\overset{U}{\leftarrow}{\mathbb{F}}_{q}},{c^{\prime{(0)}} = {\left( {\omega,{\overset{\rightarrow}{0}}^{2},\xi,0,\phi_{0}^{\prime}} \right){\mathbb{B}}_{0}}},{{KEM} = g_{T}^{\xi}},{{{for}\mspace{14mu} l^{\prime}} \in {{\left\lbrack n^{\prime} \right\rbrack\phi_{l^{\prime}}^{\prime}}\overset{U}{\leftarrow}{\mathbb{F}}_{q}}},{c^{\prime{(l^{\prime})}} = {\left( {{\omega\left( {l,x_{l^{\prime}}} \right)},{\overset{\rightarrow}{0}}^{4},{\overset{\rightarrow}{0}}^{2},\phi_{l^{\prime}}^{\prime}} \right){\mathbb{B}}_{l^{\prime}}}},{{{for}\mspace{14mu} l} \in {{\lbrack n\rbrack\phi_{l}}\overset{U}{\leftarrow}{\mathbb{F}}_{q}}},{c^{(l)} = {\left( {{\omega\left( {l,z_{l}} \right)},{\overset{\rightarrow}{0}}^{4},{\overset{\rightarrow}{0}}^{2},\phi_{l}} \right){\mathbb{B}}_{n^{\prime} + 1}}},{{{output}\mspace{14mu}{CT}} = {\left( {\overset{\rightarrow}{x},\left\{ c^{\prime{(l^{\prime})}} \right\}_{l^{\prime} \in {\lbrack{0,n^{\prime}}\rbrack}},\left\{ c^{(l)} \right\}_{l \in {\lbrack n\rbrack}}} \right).}}} \right.}} & \left\lbrack {{Formula}\mspace{14mu} 175} \right\rbrack \end{matrix}$

Referring to FIG. 8, operation of the key generation device 30 according to the second embodiment will be described.

The operation of the key generation device 30 according to the second embodiment corresponds to a key generation method according to the second embodiment. The operation of the key generation device 30 according to the second embodiment also corresponds to processes of a key generation program according to the second embodiment.

The processes other than step S34 are the same as those in the first embodiment.

(Step S34: Key Generation Process)

The key generation unit 314 generates a decryption key SK(f), using the public parameter MPK and the master secret key MSK acquired in step S31, the function f acquired in step S32, and the set of constants ({σ_(j)}_(j∈[n]), {α_(j′),γ_(j′)}_(j′∈[m])) generated in step S33.

Specifically, the key generation unit 314 generates the decryption key SK(f) as described below.

First, the key generation unit 314 samples values r₀, κ′₀, and ζ, as indicated in Formula 176.

Next, the key generation unit 314 generates an element k′⁽⁰⁾, as indicated in Formula 177.

k′ ⁽⁰⁾=(−r ₀,{right arrow over (0)}²,1,κ′₀,0)

  [Formula 177]

The key generation unit 314 generates an element k′^((j′)) for each integer j′ of j′∈[m], as indicated in Formula 178, and generates an element k^((j)) for each integer j of j∈[n], as indicated in Formula 179.

$\begin{matrix} {{{{for}\mspace{14mu} j^{\prime}} \in \lbrack m\rbrack}{{\beta_{j^{\prime}}^{\prime}\overset{U}{\leftarrow}{\mathbb{F}}_{q}},{{\overset{\rightarrow}{\kappa}}^{\prime{(j^{\prime})}}\overset{U}{\leftarrow}{\mathbb{F}}_{q}^{2}},{\gamma_{j^{\prime}}^{+} = {\gamma_{j^{\prime}} + \beta_{j^{\prime}}^{\prime}}},r_{0},{{k^{\prime}}^{(j^{\prime})} = \left( {\left( {\gamma_{j^{\prime}}^{+},\alpha_{j^{\prime}}} \right),{\overset{\rightarrow}{0}}^{4},{\overset{\rightarrow}{\kappa}}^{\prime{(j^{\prime})}},0} \right)_{{\mathbb{B}}_{p{(j^{\prime})}}^{*}}}}} & \left\lbrack {{Formula}\mspace{14mu} 178} \right\rbrack \\ {{{{for}\mspace{14mu} j} \in \lbrack m\rbrack}{{\beta_{j}\overset{U}{\leftarrow}{\mathbb{F}}_{q}},{{\overset{\rightarrow}{\kappa}}^{(j)}\overset{U}{\leftarrow}{\mathbb{F}}_{q}^{2}},{\sigma_{j}^{+} = {\sigma_{j} + \beta_{j}}},r_{0},{k^{(j)} = \left( {\left( {\sigma_{j}^{+},ϛ} \right),{\overset{\rightarrow}{0}}^{4},{\overset{\rightarrow}{\kappa}}^{(j)},0} \right)_{{\mathbb{B}}_{n^{\prime} + j}^{*}}}}} & \left\lbrack {{Formula}\mspace{14mu} 179} \right\rbrack \end{matrix}$

Then, the key generation unit 314 sets the function f, the element β′_(j′) for each integer j′ of j′∈[m], the element β_(j) for each integer j of j∈[n], the element k′⁽⁰⁾, the element k′^((j′)) for each integer j′ of j′∈[m], and the element k^((j)) for each integer j of j∈[n] as the decryption key SK(f).

That is, the key generation device 30 executes the PHPE.KeyGen algorithm indicated in Formula 180.

$\begin{matrix} {{{{PHPE}.{{KeyGen}\left( {{MPK},{MSK},f} \right)}}\text{:}}{{\left( {\left( {\left\{ \sigma_{j} \right\}_{j \in {\lbrack n\rbrack}},\left\{ {\alpha_{j^{\prime}},\gamma_{j^{\prime}}} \right\}_{j^{\prime} \in {\lbrack m\rbrack}}} \right),\left. {\rho{\text{:}\mspace{14mu}\lbrack m\rbrack}}\rightarrow\left\lbrack n^{\prime} \right\rbrack \right.} \right)\overset{R}{\leftarrow}{{PGB}(f)}},r_{0},\kappa_{0}^{\prime},{\varsigma\overset{U}{\leftarrow}{\mathbb{F}}_{q}},{k^{\prime{(0)}} = \left( {{- r_{0}},{\overset{\rightarrow}{0}}^{2},1,\kappa_{0}^{\prime},0} \right)_{{\mathbb{B}}_{0}^{*}}},{{{for}\mspace{14mu} j^{\prime}} \in \lbrack m\rbrack}}{{\beta_{j^{\prime}}^{\prime}\overset{U}{\leftarrow}{\mathbb{F}}_{q}},{{\overset{\rightarrow}{\kappa}}^{\prime{(j^{\prime})}}\overset{U}{\leftarrow}{\mathbb{F}}_{q}^{2}},{\gamma_{j^{\prime}}^{+} = {\gamma_{j^{\prime}} + \beta_{j^{\prime}}^{\prime}}},r_{0},{{k^{\prime}}^{(j^{\prime})} = \left( {\left( {\gamma_{j^{\prime}}^{+},\alpha_{j^{\prime}}} \right),{\overset{\rightarrow}{0}}^{4},{\overset{\rightarrow}{\kappa}}^{\prime{(j^{\prime})}},0} \right)_{{\mathbb{B}}_{p{(j^{\prime})}}^{*}}},{{{for}\mspace{14mu} j} \in \lbrack n\rbrack}}{{\beta_{j}\overset{U}{\leftarrow}{\mathbb{F}}_{q}},{{\overset{\rightarrow}{\kappa}}^{(j)}\overset{U}{\leftarrow}{\mathbb{F}}_{q}^{2}},{\sigma_{j}^{+} = {\sigma_{j} + \beta_{j}}},r_{0},{k^{(j)} = \left( {\left( {\sigma_{j}^{+},ϛ} \right),{\overset{\rightarrow}{0}}^{4},{\overset{\rightarrow}{\kappa}}^{(j)},0} \right)_{{\mathbb{B}}_{n^{\prime} + j}^{*}}},{{{output}\mspace{14mu}{{SK}(f)}} = {\left( {f,\left\{ \beta_{j^{\prime}}^{\prime} \right\}_{j^{\prime} \in {\lbrack m\rbrack}},\left\{ \beta_{j} \right\}_{j \in {\lbrack n\rbrack}},\left\{ k^{\prime{(j^{\prime})}} \right\}_{j^{\prime} \in {\lbrack{0,m}\rbrack}},\left\{ k^{(j)} \right\}_{j \in {\lbrack n\rbrack}}} \right).}}}} & \left\lbrack {{Formula}\mspace{14mu} 180} \right\rbrack \end{matrix}$

Referring to FIG. 10, operation of the decryption device 40 according to the second embodiment will be described.

The operation of the decryption device 40 according to the second embodiment corresponds to a decryption method according to the second embodiment. The operation of the decryption device 40 according to the second embodiment also corresponds to processes of a decryption program according to the second embodiment.

The processes other than step S44 are the same as those in the first embodiment.

(Step S44: Decryption Process)

The decryption unit 414 decrypts the ciphertext CT by performing a pairing operation on the ciphertext CT acquired in step S42 and the decryption key SK(f) acquired in step S43.

Referring to FIG. 11, a decryption process according to the second embodiment will be described.

The process of step S441 is the same as that in the first embodiment.

(Step S442: Pairing Operation Process)

The pairing operation unit 416 performs a pairing operation on the element c′⁽⁰⁾ and the element k′⁽⁰⁾ to compute an operation value Λ′₀, as indicated in Formula 181.

Λ′₀ =e(c′ ⁽⁰⁾ ,k′ ⁽⁰⁾)  [Formula 181]

The pairing operation unit 416 computes an operation value Λ′_(j′) for each integer j′ of j′∈[m] and computes an operation value Λ_(j) for each integer j of j∈[n], as in the first embodiment.

The pairing operation unit 416 writes the operation value Λ′₀, the operation value Λ′_(j′), and the operation value Λ_(j) in the memory 42.

(Step S443: Output Value Computation Process)

The output value computation unit 417 retrieves the set of coefficients (({Ω_(j)}_(j∈[n]), {Ω′_(j′)}_(j′∈[m])) computed in step S441 as well as the operation value Λ′₀, the operation value Λ′_(j), and the operation value Λ_(j) computed in step S442 from the memory 42. The output value computation unit 417 computes an operation value Λ, as indicated in Formula 182.

$\begin{matrix} {\Lambda = {\left( {\prod\limits_{j^{\prime} \in {\lbrack m\rbrack}}\;\Lambda_{j^{\prime}}^{{\prime\Omega}_{j^{\prime}}^{\prime}}} \right)\left( {\prod\limits_{j \in {\lbrack n\rbrack}}\;\Lambda_{j}^{\Omega_{j}}} \right)^{\frac{1}{{\sum_{j^{\prime} \in {\lbrack m\rbrack}}{\Omega_{j^{\prime}}^{\prime}\beta_{j^{\prime}}^{\prime}}} + {\sum_{j \in {\lbrack n\rbrack}}{\Omega_{j}\beta_{j}}}}}}} & \left\lbrack {{Formula}\mspace{14mu} 182} \right\rbrack \end{matrix}$

The output value computation unit 417 computes a session key KEM^(˜), as indicated in Formula 183.

KEM ^(˜)=ΛΛ′₀[Formula 183]

That is, the decryption device 40 executes the PHPE.Decrypt algorithm indicated in Formula 184.

$\begin{matrix} {{{{PHPE}.{{Decrypt}\left( {{MPK},{{SK}(f)},{CT}} \right)}}\text{:}}{{\left( {\left\{ \Omega_{j} \right\}_{j \in {\lbrack n\rbrack}},\left\{ \Omega_{j^{\prime}}^{\prime} \right\}_{j^{\prime} \in {\lbrack m\rbrack}}} \right) = {{REC}\left( {f,\overset{\rightarrow}{x}} \right)}},{\Lambda_{0}^{\prime} = {e\left( {c^{\prime{(0)}},k^{\prime{(0)}}} \right)}},{\Lambda_{j^{\prime}}^{\prime} = {{{e\left( {c^{\prime{({\rho{(j^{\prime})}})}},k^{\prime{(j^{\prime})}}} \right)}\mspace{14mu}{for}\mspace{14mu} j^{\prime}} \in \lbrack m\rbrack}},{\Lambda_{j} = {{{e\left( {c^{(j)},k^{(j)}} \right)}\mspace{14mu}{for}\mspace{14mu} j} \in \lbrack n\rbrack}},{\Lambda = {\left( {\prod\limits_{j^{\prime} \in {\lbrack m\rbrack}}\;\Lambda_{j^{\prime}}^{{\prime\Omega}_{j^{\prime}}^{\prime}}} \right)\left( {\prod\limits_{j \in {\lbrack n\rbrack}}\;\Lambda_{j}^{\Omega_{j}}} \right)^{\frac{1}{{\sum_{j^{\prime} \in {\lbrack m\rbrack}}{\Omega_{j^{\prime}}^{\prime}\beta_{j^{\prime}}^{\prime}}} + {\sum_{j \in {\lbrack n\rbrack}}{\Omega_{j}\beta_{j}}}}}}},{{{output}\mspace{14mu}{KEM}^{\sim}} = {{\Lambda\Lambda}_{0}^{\prime}.}}}} & \left\lbrack {{Formula}\mspace{14mu} 184} \right\rbrack \end{matrix}$

The operation value Λ′₀, the operation value Λ′_(j), and the operation value Λ_(j) are as indicated in Formula 185.

Λ′₀ =g _(T) ^(−ωr) ⁰ ^(+ξ),

Λ′_(j′) =g _(T) ^(ω(α) ^(j′) ^(x) ^(ρ(j′)) ^(+γ) ^(j′) ^(+β′) ^(j) ^(′r) ⁰ ⁾ for j′∈[m],

Λ_(j) =g _(T) ^(ω(ζz) ^(j) ^(+σ) ^(j) ^(+β) ^(j) ^(r) ⁰ ⁾ for j∈[n]

The operation value A is as indicated in Formula 186.

Λ=g _(T) ^([ωζf({right arrow over (x)},{right arrow over (z)})+ωr) ⁰ ^([Σ) ^(j′∈[m]) ^(Ω′) ^(j′) ^(β′) ^(j′) ^(+Σ) ^(j∈[n]) ^(Ω) ^(j) ^(β) ^(j) ^(]]/[Σ) ^(j′∈[m]) ^(Ω′) ^(j′) ^(β′) ^(j′) ^(+Σ) ^(j∈[n]) ^(Ω) ^(j) ^(β) ^(j) ^(])  [Formula 186]

Therefore, if R^(ABP∘IP)(f, (x^(→), z^(→)))=1, that is, f(x^(→), z^(→))=0, then Formula 187 holds.

Λ=g _(T) ^(ωr) ⁰   [Formula 187]

Therefore, KEM^(˜)=gr^(ξ)=KEM. Note that if R^(ABP∘IP)(f, (x^(→), z^(→)))≠1, that is, f(x^(→), z^(→))≠0, then Formula 187 does not hold and thus KEM^(˜)≠gr^(ξ)=KEM.

*** Effects of Second Embodiment ***

As described above, the cryptographic system 1 according to the second embodiment realizes a KEM scheme by converting the PHPE scheme described in the first embodiment. This makes it possible to realize a KEM scheme that allows a wide range of predicates and also allows security to be enhanced.

*** Other Configurations ***

<Fifth Variation>

In the second embodiment, the KEM scheme is constructed by converting the KP-PHPE method. By applying similar modifications, a KEM scheme can also be constructed by converting the CP-PHPE scheme described in the first variation.

<Sixth Variation>

By using the indexing technique as described in the second variation, the KEM scheme described in the second embodiment can also be realized using only one pair of dual bases, the basis B and the basis B*.

REFERENCE SIGNS LIST

1: cryptographic system, 10: setup device, 11: processor, 12: memory, 13: storage, 14: communication interface, 15: electronic circuit, 111: acceptance unit, 112: master key generation unit, 113: transmission unit, 20: encryption device, 21: processor, 22: memory, 23: storage, 24: communication interface, 25: electronic circuit, 211: master key acquisition unit, 212: vector acquisition unit, 213: encryption unit, 214: transmission unit, 30: key generation device, 31: processor, 32: memory, 33: storage, 34: communication interface, 35: electronic circuit, 311: master key acquisition unit, 312: function acquisition unit, 313: PGB computation unit, 314: key generation unit, 315: transmission unit, 40: decryption device, 41: processor, 42: memory, 43: storage, 44: communication interface, 45: electronic circuit, 411: master key acquisition unit, 412: ciphertext acquisition unit, 413: decryption key acquisition unit, 414: decryption unit, 415: cofactor computation unit, 416: pairing operation unit, 417: output value computation unit 

1. A decryption device comprising: processing circuitry to: acquire a ciphertext in which one of a predicate vector of arithmetic branching programs (ABP) and an attribute vector is set over a basis B of the basis B and a basis B*, which are dual bases in dual vector spaces, acquire a decryption key in which the other one of the predicate vector and the attribute vector is set over the basis B*, and decrypt the ciphertext by performing a pairing operation on the acquired ciphertext and the acquired decryption key.
 2. The decryption device according to claim 1, wherein elements of the predicate vector are elements obtained by a product of a matrix representation L that represents an ABP computing a function f and a matrix whose elements in a last row are 1's.
 3. The decryption device according to claim 2, wherein the processing circuitry computes cofactors of elements in a last column of the matrix representation L, computes an operation value by performing a pairing operation on the ciphertext and the decryption key, and computes an output value obtained by decrypting the ciphertext, using the computed cofactors and the computed operation value.
 4. The decryption device according to claim 3, wherein the processing circuitry computes a value resulting from inputting the attribute vector to the function f, using an inner-product and the cofactors, and computes the output value based on the computed value.
 5. The decryption device according to claim 4, wherein the processing circuitry acquires a ciphertext CT indicated in Formula 1, acquires a decryption key SK(f) indicated in Formula 2, computes the operation values Λ′_(j) and Λ_(j) by performing a pairing operation as indicated in Formula 3, computes a value Λ as indicated in Formula 4, and computes an output value depending on a value of the value Λ $\begin{matrix} {{{CT} = \left( {\overset{\rightarrow}{x},\left\{ c^{\prime{(l^{\prime})}} \right\}_{l^{\prime} \in {\lbrack n^{\prime}\rbrack}},\left\{ c^{(l)} \right\}_{l \in {\lbrack n\rbrack}}} \right)}{{\omega\overset{U}{\leftarrow}{\mathbb{F}}_{q}},{{{for}\mspace{14mu} l^{\prime}} \in \left\lbrack n^{\prime} \right\rbrack}}{{\phi_{l^{\prime}}^{\prime}\overset{U}{\leftarrow}{\mathbb{F}}_{q}},{c^{\prime{(l^{\prime})}} = \left( {{\omega\left( {l,x_{l^{\prime}}} \right)},{\overset{\rightarrow}{0}}^{4},{\overset{\rightarrow}{0}}^{2},\phi_{l^{\prime}}^{\prime}} \right)_{{\mathbb{B}}_{l^{\prime}}}},{{{for}\mspace{14mu} l} \in \lbrack n\rbrack}}{{\phi_{l}\overset{U}{\leftarrow}{\mathbb{F}}_{q}},{c^{(l)} = \left( {{\omega\left( {l,z_{l}} \right)},{\overset{\rightarrow}{0}}^{4},{\overset{\rightarrow}{0}}^{2},\phi_{l}} \right)_{{\mathbb{B}}_{n^{\prime} + 1}}},{where}}{n^{\prime},{n \in {\mathbb{N}}},{\left( {\overset{\rightarrow}{x},\overset{\rightarrow}{z}} \right) \in {{\mathbb{F}}_{q}^{n^{\prime}} \times {\mathbb{F}}_{q}^{n}\mspace{14mu}{are}\mspace{14mu}{attribute}\mspace{14mu}{vectors}}},}} & \left\lbrack {{Formula}\mspace{14mu} 1} \right\rbrack \\ {{{{{SK}(f)} = \left( {f,\left\{ k^{\prime{(j^{\prime})}} \right\}_{j^{\prime} \in {\lbrack m\rbrack}},\left\{ k^{(j)} \right\}_{j \in {\lbrack m\rbrack}}} \right)},{\left( {\left( {\left\{ \sigma_{j} \right\}_{j \in {\lbrack n\rbrack}},\left\{ {\alpha_{j^{\prime}},\gamma_{j^{\prime}}} \right\}_{j^{\prime} \in {\lbrack m\rbrack}}} \right),\left. {\rho{\text{:}\mspace{14mu}\lbrack m\rbrack}}\rightarrow\left\lbrack n^{\prime} \right\rbrack \right.} \right)\overset{R}{\leftarrow}{{PGB}(f)}},{\varsigma\overset{U}{\leftarrow}{\mathbb{F}}_{q}},{{{for}\mspace{14mu} j^{\prime}} \in \lbrack m\rbrack}}{{{\overset{\rightarrow}{\kappa}}^{\prime{(j^{\prime})}}\overset{U}{\leftarrow}{\mathbb{F}}_{q}^{2}},{{k^{\prime}}^{(j^{\prime})} = \left( {\left( {\gamma_{j^{\prime}},\alpha_{j^{\prime}}} \right),{\overset{\rightarrow}{0}}^{4},{\overset{\rightarrow}{\kappa}}^{\prime{(j^{\prime})}},0} \right)_{{\mathbb{B}}_{p{(j^{\prime})}}^{*}}},{{{for}\mspace{14mu} j} \in \lbrack n\rbrack}}{{{\overset{\rightarrow}{\kappa}}^{\prime{(j)}}\overset{U}{\leftarrow}{\mathbb{F}}_{q}^{2}},{k^{(j)} = \left( {\left( {\sigma_{j},ϛ} \right),{\overset{\rightarrow}{0}}^{4},{\overset{\rightarrow}{\kappa}}^{\prime{(j)}},0} \right)_{{\mathbb{B}}_{n^{\prime} + j}^{*}}},}} & \left\lbrack {{Formula}\mspace{14mu} 2} \right\rbrack \end{matrix}$ where PGB(f) is an algorithm that takes as input a function f, and outputs a set of constants ({σ_(j)}_(j∈[n]), {α_(j′),γ_(j′)}_(j′∈[m]))∈F_(q) ^(n)×(F_(q) ²)^(m), which are dements of a predicate vector, along with a function p $\begin{matrix} {{\Lambda_{j^{\prime}}^{\prime} = {{{e\left( {c^{\prime{({\rho{(j^{\prime})}})}},k^{\prime{(j^{\prime})}}} \right)}\mspace{14mu}{for}\mspace{14mu} j^{\prime}} \in \lbrack m\rbrack}},{\Lambda_{j} = {{{e\left( {c^{(j)},k^{(j)}} \right)}\mspace{14mu}{for}\mspace{14mu} j} \in \lbrack n\rbrack}}} & \left\lbrack {{Formula}\mspace{14mu} 3} \right\rbrack \\ {{\Lambda = {\left( {\prod\limits_{j^{\prime} \in {\lbrack m\rbrack}}\;\Lambda_{j^{\prime}}^{{\prime\Omega}_{j^{\prime}}^{\prime}}} \right)\left( {\prod\limits_{j \in {\lbrack n\rbrack}}\;\Lambda_{j}^{\Omega_{j}}} \right)}},{\left( {\left\{ \Omega_{j} \right\}_{j \in {\lbrack n\rbrack}},\left\{ \Omega_{j^{\prime}}^{\prime} \right\}_{j^{\prime} \in {\lbrack m\rbrack}}} \right) = {{REC}\left( {f,\overset{\rightarrow}{x}} \right)}},} & \left\lbrack {{Formula}\mspace{14mu} 4} \right\rbrack \end{matrix}$ where REC(f,{right arrow over (x)}) is an algorithm that takes as input a function f and {right arrow over (x)}∈F_(q) ^(n′), and outputs a set of coefficients ({Ω_(j)}_(j∈[n]), {Ω′_(j′)}_(j′∈[m]))∈F_(q) ^(n+m).
 6. The decryption device according to claim 4, wherein the processing circuitry acquires a ciphertext CT indicated in Formula 5, acquires a decryption key SK(f) indicated in Formula 6, computes the operation values Λ′₀, Λ′_(j), and Λ_(j) by performing a pairing operation as indicated in Formula 7, computes a value A as indicated in Formula 8, and computes a value ΛΛ′₀ as the output value $\begin{matrix} {{{{CT} = \left( {\overset{\rightarrow}{x},\left\{ c^{\prime{(l^{\prime})}} \right\}_{l^{\prime} \in {\lbrack{0,n^{\prime}}\rbrack}},\left\{ c^{(l)} \right\}_{l \in {\lbrack n\rbrack}}} \right)},\omega,\xi,{\phi_{0}^{\prime}\overset{U}{\leftarrow}{\mathbb{F}}_{q}},{c^{\prime{(0)}} = \left( {\omega,{\overset{\rightarrow}{0}}^{2},\xi,0,\phi_{0}^{\prime}} \right)_{{\mathbb{B}}_{0}}},{{{for}\mspace{14mu} l^{\prime}} \in \left\lbrack n^{\prime} \right\rbrack}}{{\phi_{l^{\prime}}^{\prime}\overset{U}{\leftarrow}{\mathbb{F}}_{q}^{2}},{c^{\prime{(l^{\prime})}} = \left( {{\omega\left( {l,x_{l^{\prime}}} \right)},{\overset{\rightarrow}{0}}^{4},{\overset{\rightarrow}{0}}^{2},\phi_{l^{\prime}}^{\prime}} \right)_{{\mathbb{B}}_{l^{\prime}}}},{{{for}\mspace{14mu} l} \in \lbrack n\rbrack}}{{\phi_{l}\overset{U}{\leftarrow}{\mathbb{F}}_{q}},{c^{(l)} = \left( {{\omega\left( {l,z_{l}} \right)},{\overset{\rightarrow}{0}}^{4},{\overset{\rightarrow}{0}}^{2},\phi_{l}} \right)_{{\mathbb{B}}_{n^{\prime} + 1}}},{where}}{n^{\prime},{n \in {\mathbb{N}}},{\left( {\overset{\rightarrow}{x},\overset{\rightarrow}{z}} \right) \in {{\mathbb{F}}_{q}^{n^{\prime}} \times {\mathbb{F}}_{q}^{n}\mspace{14mu}{are}\mspace{14mu}{attribute}\mspace{14mu}{vectors}}},}} & \left\lbrack {{Formula}\mspace{14mu} 5} \right\rbrack \\ {{{{{SK}(f)} = \left( {f,\left\{ \beta_{j^{\prime}}^{\prime} \right\}_{j^{\prime} \in {\lbrack m\rbrack}},\left\{ \beta_{j} \right\}_{j \in {\lbrack n\rbrack}},\left\{ {k^{\prime}}^{(j^{\prime})} \right\}_{j^{\prime} \in {\lbrack m\rbrack}},\left\{ k^{(j)} \right\}_{j \in {\lbrack m\rbrack}}} \right)},{\left( {\left( {\left\{ \sigma_{j} \right\}_{j \in {\lbrack n\rbrack}},\left\{ {\alpha_{j^{\prime}},\gamma_{j^{\prime}}} \right\}_{j^{\prime} \in {\lbrack m\rbrack}}} \right),\left. {\rho{\text{:}\mspace{14mu}\lbrack m\rbrack}}\rightarrow\left\lbrack n^{\prime} \right\rbrack \right.} \right)\overset{R}{\leftarrow}{{PGB}(f)}},{r_{0}\kappa_{0}^{\prime}},{\varsigma\overset{U}{\leftarrow}{\mathbb{F}}_{q}},{k^{\prime{(0)}} = \left( {{- r_{0}},{\overset{\rightarrow}{0}}^{2},1,\kappa_{0}^{\prime},0} \right)_{{\mathbb{B}}_{0^{\prime}}}},{{{for}\mspace{14mu} j^{\prime}} \in \lbrack m\rbrack}}{{\beta_{j^{\prime}}^{\prime}\overset{U}{\leftarrow}{\mathbb{F}}_{q}},{{\overset{\rightarrow}{\kappa}}^{\prime{(j^{\prime})}}\overset{U}{\leftarrow}{\mathbb{F}}_{q}^{2}},{\gamma_{j^{\prime}}^{+} = {\gamma_{j^{\prime}} + \beta_{j^{\prime}}^{\prime}}},r_{0},{{k^{\prime}}^{(j^{\prime})} = \left( {\left( {\gamma_{j^{\prime}}^{+},\alpha_{j^{\prime}}} \right),{\overset{\rightarrow}{0}}^{4},{\overset{\rightarrow}{\kappa}}^{\prime{(j^{\prime})}},0} \right)_{{\mathbb{B}}_{p{(j^{\prime})}}^{*}}},{{{for}\mspace{14mu} j} \in \lbrack n\rbrack}}{{\beta_{j}\overset{U}{\leftarrow}{\mathbb{F}}_{q}},{{\overset{\rightarrow}{\kappa}}^{(j)}\overset{U}{\leftarrow}{\mathbb{F}}_{q}^{2}},{\sigma_{j}^{+} = {{\sigma_{j} + {\beta_{j}r_{0}k^{(j)}}} = \left( {\left( {\sigma_{j}^{+},ϛ} \right),{\overset{\rightarrow}{0}}^{4},{\overset{\rightarrow}{\kappa}}^{(j)},0} \right)_{{\mathbb{B}}_{n^{\prime} + j}^{*}}}},}} & \left\lbrack {{Formula}\mspace{14mu} 6} \right\rbrack \end{matrix}$ where PGB(f) is an algorithm that takes as input a function F, and outputs a set of constants ({σ_(j)}_(j∈[n]), {α_(j′),γ_(j′)}_(j′∈[m]))∈F_(q) ^(n)×(F_(q) ²)^(m), which are elements of a predicate vector, along with a function ρ:[m]→[n′], $\begin{matrix} {{\Lambda_{0}^{\prime} = {e\left( {c^{\prime{(0)}},k^{\prime{(0)}}} \right)}},{\Lambda_{j^{\prime}}^{\prime} = {{{e\left( {c^{\prime{({\rho{(j^{\prime})}})}},k^{\prime{(j^{\prime})}}} \right)}\mspace{14mu}{for}\mspace{14mu} j^{\prime}} \in \lbrack m\rbrack}},{\Lambda_{j} = {{{e\left( {c^{(j)},k^{(j)}} \right)}\mspace{14mu}{for}\mspace{14mu} j} \in \lbrack n\rbrack}}} & \left\lbrack {{Formula}\mspace{14mu} 7} \right\rbrack \\ {{\Lambda = {\left( {\prod\limits_{j^{\prime} \in {\lbrack m\rbrack}}\;\Lambda_{j^{\prime}}^{{\prime\Omega}_{j^{\prime}}^{\prime}}} \right)\left( {\prod\limits_{j \in {\lbrack n\rbrack}}\;\Lambda_{j}^{\Omega_{j}}} \right)^{\frac{1}{{\sum_{j^{\prime} \in {\lbrack m\rbrack}}{\Omega_{j^{\prime}}^{\prime}\beta_{j^{\prime}}^{\prime}}} + {\sum_{j \in {\lbrack n\rbrack}}{\Omega_{j}\beta_{j}}}}}}},{\left( {\left\{ \Omega_{j} \right\}_{j \in {\lbrack n\rbrack}},\left\{ \Omega_{j^{\prime}}^{\prime} \right\}_{j^{\prime} \in {\lbrack m\rbrack}}} \right) = {{REC}\left( {f,\overset{\rightarrow}{x}} \right)}},} & \left\lbrack {{Formula}\mspace{14mu} 8} \right\rbrack \end{matrix}$ where REC(f,{right arrow over (x)}) is an algorithm that takes as input a function f and {right arrow over (x)}∈F_(q) ^(n′), and outputs a set of coefficients ({Ω_(j)}_(j∈[n]), {Ω′_(j′)}_(j′∈[m]))∈F_(q) ^(n+m′).
 7. A cryptographic system comprising: an encryption device to generate a ciphertext by setting, in the ciphertext, one of a predicate vector of arithmetic branching programs (ABP) and an attribute vector over a basis B of the basis B and a basis B*, which are dual bases in dual vector spaces; a key generation device to generate a decryption key by setting, in the decryption key, the other one of the predicate vector and the attribute vector over the basis B*; and a decryption device to decrypt the ciphertext by performing a pairing operation on the ciphertext generated by the encryption device and the decryption key generated by the key generation device.
 8. A decryption method comprising: acquiring a ciphertext in which one of a predicate vector of arithmetic branching programs (ABP) and an attribute vector is set over a basis B of the basis B and a basis B*, which are dual bases in dual vector spaces; acquiring a decryption key in which the other one of the predicate vector and the attribute vector is set over the basis B*; and decrypting the ciphertext by performing a pairing operation on the acquired ciphertext and the acquired decryption key. 